OnCheckedChanged事件根本没有在GridView中触发

Ada*_*dam 5 c# asp.net checkbox events oncheckedchanged

我在TemplateField中有一个带有asp CheckBox的GridView.TemplateField定义如下:

<asp:TemplateField HeaderText="HeaderName">
    <ItemTemplate>
        <asp:CheckBox ID="checkBoxId" runat="server" OnCheckedChanged="MyCheckChangedMethod" AutoPostBack="true"/>
    </ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

当我在MyCheckChangedMethod中使用断点运行我的Web项目并单击该复选框时没有任何反应.断点没有被击中.我的Visual Studio调试器正在运行.

另外,我的页面定义中有AutoEventWireup = True,因此我不必手动挂接事件.我以前从来没有遇到过这样做的问题.我在同一页面上有一个按钮设置与click事件完全相同的方式,并且断点得到了很好的打击.

有任何想法吗?

小智 6

您需要添加AutoPostback = Trueasp:CheckBox标签.


CAb*_*ott 5

复选框控件的回发事件将无法正确触发,因为它在GridView中会破坏控件的ID.

如果需要Checkbox来反映数据,可以使用CheckBoxField对象并以此方式绑定.

如果需要它对该行执行操作,您可能希望使用CommandName属性和RowCommand事件查看ButtonField对象.

有一些方法可以访问GridView服务器端的复选框.


小智 5

DataBind在控制事件触发之前调用时会发生此问题.如果你调用DataBindPage_Load放它 if (!isPostBack) {}并调用DataBind事件处理程序本身.