aspx中:
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="CheckBox_全选" runat="server" OnCheckedChanged="CheckBox_全选_CheckedChanged" AutoPostBack="true" Text="全选" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="ItemCheckBox" runat="server" OnCheckedChanged="ItemCheckBox_CheckedChanged" AutoPostBack="true" />
</ItemTemplate>
</asp:TemplateField>
<Columns>
cs中:
protected void CheckBox_全选_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkBox = (CheckBox)sender;
for (int i = 0; i < GridView1.Rows.Count; ++i)
{
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("ItemCheckBox");
if (cb.Checked != checkBox.Checked)
{
cb.Checked = checkBox.Checked;
}
}
}
protected void ItemCheckBox_CheckedChanged(object sender, EventArgs e)
{
int checkedCount = 0;
for (int i = 0; i < GridView1.Rows.Count; ++i)
{
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("ItemCheckBox");
checkedCount += cb.Checked ? 1 : 0;
}
CheckBox checkBox = (CheckBox)GridView1.HeaderRow.FindControl("CheckBox_全选");
checkBox.Checked = checkedCount == GridView1.Rows.Count;
}
本文介绍如何在ASP.NET的GridView控件中实现全选与反选功能。通过在HeaderTemplate中放置CheckBox并设置OnCheckedChanged事件,可以控制整个GridView中所有ItemTemplate内的CheckBox状态。同时,当任何一个子项的状态改变时,也会自动更新全选CheckBox的状态。
202

被折叠的 条评论
为什么被折叠?



