OnCheckedChanged 事件根本没有在 GridView 中触发
-
18-09-2019 - |
题
我有一个 GridView,在 TemplateField 中有一个 asp 复选框。TemplateField 定义如下:
<asp:TemplateField HeaderText="HeaderName">
<ItemTemplate>
<asp:CheckBox ID="checkBoxId" runat="server" OnCheckedChanged="MyCheckChangedMethod" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField>
当我在 MyCheckChangedMethod 中使用断点运行 Web 项目并单击复选框时,什么也没有发生。未命中断点。我的 Visual Studio 调试器正在运行。
此外,我的页面定义中有 AutoEventWireup = True,因此我不必手动连接该事件。我以前这样做从来没有遇到过问题。我在同一页面上有一个按钮,设置方式与单击事件完全相同,并且断点在其中得到很好的命中。
有任何想法吗?
解决方案
复选框控件的回发事件不会正确触发,因为它位于破坏控件 ID 的 GridView 中。
如果您需要复选框来反映数据,您可以使用 复选框字段 对象并以这种方式绑定。
如果您需要它对该行执行操作,您可能需要查看 按钮字段 对象使用 命令名称 财产和 行命令 事件。
有一些方法可以 访问 GridView 服务器端内的复选框.
其他提示
您需要在AutoPostback = True
标签添加asp:CheckBox
。
当控制事件被烧成前DataBind
被称为出现问题。
如果调用DataBind
在Page_Load
把它放在
if (!isPostBack) {}
和呼叫DataBind
在事件处理程序本身。
尝试:
<asp:CheckBox ID="checkBoxId" runat="server" AutoPostBack=true OnCheckedChanged="MyCheckChangedMethod"/>
确保aspx页面具有的CodeFile = “YOUR_FILE.aspx.cs” 在顶部。
同时看到它,你的函数MyCheckChangedMethod被定义为
功能应该有对象发件人,EventArgs的。
public void MyCheckChangedMethod(object sender, EventArgs e)
{
bool b = false;//your data here
}
另外,还要确保在web.config已经调试设置为true(觉得已经做了)。
不隶属于 StackOverflow