5

我在 TemplateField 中有一个带有 asp CheckBox 的 GridView。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,因此我不必手动连接事件。我以前从来没有遇到过这样的问题。我在同一页面上有一个按钮,设置方式与单击事件完全相同,并且断点在其中被击中。

有任何想法吗?

4

4 回答 4

6

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

于 2009-12-16T02:14:38.737 回答
6

DataBind在触发控制事件之前调用时会出现问题。如果您调用将其放入 DataBind并调用事件处理程序本身。Page_Loadif (!isPostBack) {}DataBind

于 2011-04-13T11:52:53.677 回答
5

复选框控件的回发事件不会正确触发,因为它位于破坏控件 ID 的 GridView 中。

如果您需要 Checkbox 来反映数据,您可以使用CheckBoxField对象并以这种方式绑定。

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

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

于 2009-08-17T19:09:17.583 回答
0

尝试:

<asp:CheckBox  ID="checkBoxId" runat="server" AutoPostBack=true OnCheckedChanged="MyCheckChangedMethod"/>

确保 aspx 页面顶部有 CodeFile="YOUR_FILE.aspx.cs"。

另请注意您的函数 MyCheckChangedMethod 定义为

函数应该有对象发送者,EventArgs e。

public void MyCheckChangedMethod(object sender, EventArgs e)
{
  bool b = false;//your data here
}

还要确保 web.config 已将调试设置为 true(认为已经完成)。

于 2009-08-17T17:23:01.557 回答