0

我使用此代码在其中创建了带有复选框的网格视图。

<asp:GridView ID="GridView1" runat="server" Width="366px" autogeneratecolumn="false">
        <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:CheckBox ID="SelectAllCheckBox" runat="server" AutoPostBack="true" oncheckedchanged="SelectAllCheckBox_OnCheckedChanged" />
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID="EachCheckBox" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

我尝试选中/取消选中它。 在此处输入链接描述

protected void SelectAllCheckBox_OnCheckedChanged(object sender, EventArgs e)
    {
        String test = "test";
        test = "newtest";
        GridView1.DataSource = null;
        GridView1.DataBind();
    }

但它不会触发任何事件。 在此处输入链接描述

我正在尝试找到我的代码丢失的地方,并且到目前为止已经搜索过,但仍然找不到。

谢谢您的帮助!

4

2 回答 2

0

您必须使用 OnItemCreated 或 OnItemDataBound 并将您的复选框与您的委托链接

   void Item_Created(Object sender, DataGridItemEventArgs e) 
   {

      CheckBox cbx = (CheckBox)e.Item.FindControl("SelectAllCheckBox");
      cbx.CheckedChanged += SelectAllCheckBox_OnCheckedChanged;

   }
于 2012-07-27T15:13:22.063 回答
0

代码看起来不错,对我有用。

我怀疑您可能会在每次回发时绑定 GridView。

当您单击附加了事件的 CheckBox 时,它会导致页面刷新。如果您在 Page_Load 上绑定 CheckBox(或在每次访问服务器时发生的任何方法),它将在您每次单击 CheckBox 时绑定网格。在这种情况下,它永远不会触发您的事件。

如果是这样,请在绑定 GridView 之前尝试检查回发。

例如:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Gridview1.DataSource = myDataSource;
        GridView1.DataBind();
    }
}
于 2012-07-27T19:43:58.903 回答