CheckviewChanged事件未在Gridview中触发

时间:2015-08-12 07:49:08

标签: c# asp.net gridview dynamic

我有一个gridview,我在其中为HeaderTemplate手动生成了一个列,如下所示

<asp:GridView ID="gvDB" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" OnRowDataBound="gvDB_RowDataBound" <asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkSelectHeader" AutoPostBack="true" OnCheckedChanged="chkSelectHeader_CheckedChanged" runat="server"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" AutoPostBack="true" runat="server" OnCheckedChanged="chkSelect_CheckedChanged1" />
</ItemTemplate>
</asp:TemplateField>
 </Columns>
</asp:GridView>

OnRowDataBound我动态生成控件并将其添加到每一行

e.Row.Cells[rowIndex].Controls.Add(control);

他们按预期绑定到列。但我的chkSelectHeader_CheckedChanged chkSelect_CheckedChanged1事件未触发。

页面加载

protected void Page_Load(object sender, EventArgs e)
 {
    if (!Page.IsPostBack)
    {
      AddTemplatesToGrid();
    }
    BindDataToGridView();
 }




 public void AddTemplatesToGrid()
 {
    DataTable dt = new DataTable();
    foreach (Employees emp in EmployeesList)
    {
    TemplateField tfield = new TemplateField();
    tfield.HeaderText = emp.Name;
    gvDataEntry.Columns.Add(tfield);
    }
 }

1 个答案:

答案 0 :(得分:0)

您在每次回发时都会调用 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { AddTemplatesToGrid(); } BindDataToGridView(); } ,这会丢弃事件。

BindDataToGridView()

!Page.IsPostBack中加入{{1}} - 检查。