那里。我有一个带有一列复选框的gridview,当它是一个小型测试项目时工作但是当我将它添加到我的团队项目中的页面时它停止触发checkedChanged事件。复选标记仍然出现或消失,但没有任何火灾。唯一的主要区别是我最初使用的是sqlDataSource对象,但对于新项目,我必须将其绑定到后面代码中的数据库。
这是我的HTML:
<asp:TemplateField HeaderText="Create Incident">
<ItemTemplate>
<asp:CheckBox ID="Selections" runat="server" ViewStateMode = "Enabled" OnCheckedChanged="CheckBox1_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
和一些简单的背后代码:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
Console.WriteLine("clicked!");
}
将AutoPostBack
设置为True
以启用回发
<asp:CheckBox ID="Selections" runat="server" ViewStateMode = "Enabled" OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="True" />
我找到了解决方案。我添加了条件块if(!page.isPostBack)围绕我的页面加载事件中的东西。
保持搜索大约一个小时,直到我发现OnCheckedChanged事件没有在我的页面上触发的实际原因是由于重复的名称。咄
输入控件的名称为“submit”,我的JavaScript中也存在一个名为submit()的方法。每次需要触发事件时,JavaScript解释器都会在控件名称和函数之间混淆。更改了控件的名称,一切都恢复正常。