C# ASP.NET';选中所有CB';复选框标题模板不工作

C# ASP.NET';选中所有CB';复选框标题模板不工作,c#,asp.net,C#,Asp.net,我正在使用VisualStudio2005C#,并在服务器端进行编码 我的gridview中有一个复选框模板。我已尝试在gridview外部分配一个CheckAllCB按钮,以便在单击CheckAllCB时,将选中项目模板中的复选框列表。 但是,它不起作用,我无法发现错误。 下面是我的CheckAllCB按钮的代码: protected void CheckAllCB_CheckedChanged(object sender, EventArgs e) { CheckBox chk =

我正在使用VisualStudio2005C#,并在服务器端进行编码

我的gridview中有一个复选框模板。我已尝试在gridview外部分配一个
CheckAllCB
按钮,以便在单击
CheckAllCB
时,将选中项目模板中的复选框列表。 但是,它不起作用,我无法发现错误。 下面是我的
CheckAllCB
按钮的代码:

protected void CheckAllCB_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)GridView1.HeaderRow.FindControl("CheckAll");
    if (chk.Checked)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox chkrow = (CheckBox)GridView1.Rows[i].FindControl("UserSelector");
            chkrow.Checked = true;
        }

    }
    else
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox chkrow = (CheckBox)GridView1.Rows[i].FindControl("UserSelector");
            chkrow.Checked = false;
        }
    }
}
有人能帮我找出我在方法上犯的错误吗?多谢各位


UserSelection
项目模板:

CheckAllCB
标题模板:


添加了
GridView
的源代码:

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" ondatabound="gv_DataBound" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
    <Columns>
                     <asp:TemplateField>
                     <HeaderTemplate>
                         <asp:CheckBox ID="CheckAllCB" runat="server" OnCheckedChanged="CheckAllCB_CheckedChanged" />
  </HeaderTemplate>
                        <ItemTemplate>

                          <asp:CheckBox ID="UserSelection" OnCheckedChanged="UserSelector_CheckedChanged" runat="server" />

                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
</asp:GridView>

您可以在客户端完成。以下是我通常使用jQuery的方式:

<asp:CheckBox ID='checkAll' runat='server' />

<asp:CheckBox ID='cb1' CssClass='checky' runat='server' />
<asp:CheckBox ID='cb2' CssClass='checky' runat='server' />

<script type='text/javascript'>
    $(function() {
        $('#<%= checkAll.ClientID %>').click(function() {
            $(".checky").prop("checked", $(this).prop("checked"));
        });
    });
</script>

$(函数(){
$('#')。单击(函数(){
$(“.checky”).prop(“选中”),$(this.prop(“选中”);
});
});

问题在于该复选框在页面中声明为UserSelection,但您正在codebehind中查找UserSelector

此外,页眉在页面中声明为CheckAllCB,但您正在代码隐藏中查找CheckAll


您需要更改其中一个,以便名称匹配。

是否可以编辑您的帖子并包含gridview模板?了解UserSelector是如何定义的会有帮助。@competent\u tech用ssSorry编辑的,我应该更具体一点;您是否可以包括定义网格视图的ASP.Net页面源(仅网格视图)。@competent\u tech Np。我已经为我的GridView添加了源代码。我同意客户端应该是这样做的。我认为您的代码需要包装在一个文档中。尽管如此。@Jordan True,确实如此。正在修复。感谢您帮助我发现我的
CheckAll
UncheckAll
按钮的错误。现在已经奏效了。但是对于标题模板中的复选框
CheckAllCB
,是否可以将
CheckAll
UncheckAll
中使用的相同方法分配给标题模板中的
CheckAllCB
<asp:CheckBox ID='checkAll' runat='server' />

<asp:CheckBox ID='cb1' CssClass='checky' runat='server' />
<asp:CheckBox ID='cb2' CssClass='checky' runat='server' />

<script type='text/javascript'>
    $(function() {
        $('#<%= checkAll.ClientID %>').click(function() {
            $(".checky").prop("checked", $(this).prop("checked"));
        });
    });
</script>