我有一个 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被称为出现问题。 如果调用DataBindPage_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(觉得已经做了)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top