C# ASP.NET';选中所有CB';复选框标题模板不工作
我正在使用VisualStudio2005C#,并在服务器端进行编码 我的gridview中有一个复选框模板。我已尝试在gridview外部分配一个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 =
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>