Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子网格复选框选中未选中时未激发的事件_C#_Asp.net - Fatal编程技术网

C# 子网格复选框选中未选中时未激发的事件

C# 子网格复选框选中未选中时未激发的事件,c#,asp.net,C#,Asp.net,我在父网格和子网格中有一个嵌套网格和复选框。在父网格标题处有一个主复选框,用于选择所有数据。然后,对父行有另一个复选框,对每个子行有第三个复选框。 前两个复选框和事件工作正常。 问题在于子网格复选框。当我选中复选框时,事件将按预期触发。但是当复选框未选中时,事件不会被触发。相反,它只是发回。 代码如下 <asp:GridView ID="grdmaster" runat="server" SkinID="GridView" AutoGenerateColumns="false" Data

我在父网格和子网格中有一个嵌套网格和复选框。在父网格标题处有一个主复选框,用于选择所有数据。然后,对父行有另一个复选框,对每个子行有第三个复选框。 前两个复选框和事件工作正常。 问题在于子网格复选框。当我选中复选框时,事件将按预期触发。但是当复选框未选中时,事件不会被触发。相反,它只是发回。 代码如下

 <asp:GridView ID="grdmaster" runat="server" SkinID="GridView" AutoGenerateColumns="false" DataKeyNames="ProjectNo" HorizontalAlign="Center" HeaderStyle-Height="35px" OnRowDataBound ="grdmaster_RowDataBound" >
                <Columns>

                    <asp:TemplateField HeaderText="View Forging">
                        <ItemTemplate>
                            <img alt="" style="cursor: pointer" src="images/plus1.png" />
                            <asp:Panel ID="pnlforginfo" runat="server" Style="display: none">
                                <asp:GridView ID ="gvforgmst" runat="server" AutoGenerateColumns="false"  CssClass="ChildGrid" ShowHeaderWhenEmpty="true" EmptyDataText="No Data Found" SkinID="GridView">
                                    <Columns>                                  
                                        <asp:BoundField ItemStyle-Width="150px" DataField="ForgingNo" HeaderText="Forging No" />
                                        <asp:BoundField ItemStyle-Width="150px" DataField="ProductType" HeaderText="Product" /> 
                                        <asp:TemplateField ControlStyle-Height="35px">

                                            <ItemTemplate>
                                                <asp:CheckBox ID="chkviewforg" runat="server" AutoPostBack ="true" OnCheckedChanged="chkviewforg_CheckedChanged" ViewStateMode="Enabled" EnableViewState="True" />
                                            </ItemTemplate>
                                        </asp:TemplateField>                                                                          
                                    </Columns>
                                </asp:GridView>
                            </asp:Panel>
                        </ItemTemplate>
                    </asp:TemplateField>                         
                    <asp:BoundField HeaderText="ProjectNo" DataField="ProjectNo" />
                    <asp:BoundField HeaderText="CustomerName" DataField="CustomerName" />                       
                    <asp:BoundField HeaderText="GradCode" DataField="GradCode" />
                    <asp:TemplateField ControlStyle-Height="35px">
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkAll" runat="server"
                                AutoPostBack="true" OnCheckedChanged="chkAll_CheckedChanged" />
                        </HeaderTemplate>
                        <ItemTemplate>
                             <asp:CheckBox ID="chk" runat="server"
                                AutoPostBack="true" OnCheckedChanged="chk_CheckedChanged" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>






protected void chkviewforg_CheckedChanged(object sender, EventArgs e)
    {

        int cnt = 0;
        CheckBox chkAll = (CheckBox)grdmaster.HeaderRow.Cells[4].FindControl("chkAll");
        for (int i = 0; i < grdmaster.Rows.Count; i++)
        {
            GridView gvforgmst = (GridView)grdmaster.Rows[i].FindControl("gvforgmst");

            CheckBox chk = (CheckBox)grdmaster.Rows[i]
                         .Cells[4].FindControl("chk");
            foreach (GridViewRow gr in gvforgmst.Rows)
            {
                CheckBox chkviewforg = ((CheckBox)gr.FindControl("chkviewforg"));

                if (chkviewforg.Checked)
                {
                    cnt++;
                }
            }

            if (gvforgmst.Rows.Count > 0)
            {
                if (cnt == gvforgmst.Rows.Count)
                {
                    chk.Checked = true;
                }
                else
                {
                    chk.Checked = false;
                    chkAll.Checked = false;
                }
            }                
        }
    }

受保护的void chkviewforg_CheckedChanged(对象发送方,事件参数e)
{
int-cnt=0;
复选框chkAll=(复选框)grdmaster.HeaderRow.Cells[4].FindControl(“chkAll”);
对于(int i=0;i0)
{
if(cnt==gvforgmst.Rows.Count)
{
chk.Checked=真;
}
其他的
{
chk.Checked=假;
chkAll.Checked=假;
}
}                
}
}

您可以尝试在ItemDataBound处提供OnCheckedChanged处理程序吗?我没有使用ItemDataBound事件。你能解释一下怎么做吗?