CheckboxChanged事件未在GridView中触发复选框取消选中Web应用程序

时间:2015-09-22 08:52:50

标签: c# asp.net checkbox

我在网格视图中有一个Checkbox,我有一个OnCheckedChange事件。此事件在Check上触发,如果Grid中有多行。但当只有一行时,OnCheckedChanged事件会在选中复选框时触发,但不会取消选中复选框。我正在努力解决这个问题。但到目前为止还没有发生任何好事。 这是WebApplication而不是Windows窗体应用程序。所以我无法使用CellValueChanged事件。以下是我的代码。

<asp:TemplateField HeaderStyle-CssClass="GridHeaderStyle" ItemStyle-CssClass="GridRowStyle" ItemStyle-HorizontalAlign="Center">
 <ItemTemplate>
            <asp:CheckBox ID="chkSelectEmployee" runat="server" key="chkEmployeeSrcItem" index='<%# DataBinder.Eval (Container, "RowIndex") %>' pair='<%# DataBinder.Eval (Container.DataItem, "ID") %>' AutoPostBack="true" OnCheckedChanged="chkSelectEmployee_CheckedChanged" />
 </ItemTemplate>
</asp:TemplateField>

protected void gvEmployeeSource_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //Code Goes here
    }
}

protected void chkSelectEmployee_CheckedChanged(object sender, EventArgs e)
{
   //Code goes here
}

1 个答案:

答案 0 :(得分:0)

尝试以下解决方案,取自here

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <asp:CheckBox runat="server" ID="id" AutoPostBack="true"  OnCheckedChanged="id_CheckedChanged"/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

然后是服务器端代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGrid();
    }
}

private void BindGrid()
{
    // Get data from datasource and bind it to the gridview.
}

protected void id_CheckedChanged(object sender, EventArgs e)
{
    CheckBox lnkView = (sender as CheckBox);

    if (lnkView.Checked)
    {
         Response.Write( "you checked the checkbox");
    }
    else if (!lnkView.Checked)
    {
         Response.Write("checkbox is not checked");
    }
}