这个功能我用客户js写过,但因为用的是服务端控件,gridveiw翻页后便不可用了,于是写了个客户端实现的方法。
如图
如图设置成模板列放入控件即可
以下为模板列部分代码:
<asp:TemplateField HeaderStyle-Width="48px">
<HeaderTemplate>
<asp:CheckBox ID="ckAll" runat="server" AutoPostBack="True" OnCheckedChanged="ckAll_CheckedChanged" />全选
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
<HeaderStyle Width="48px" />
</asp:TemplateField>
看表头选框的事件
//全选
protected void ckAll_CheckedChanged(object sender, EventArgs e)
{
Operate.CheckAll(GridView1, sender);
}
这里我写了一个通用的方法CheckAll(Gridview1,sender);
有了这个方法,只需要传入需要使用全选功能的gridview控件和一个触发全选功能的控件(表头的checkbox)
看CheckAll()方法是怎么实现的
public static void CheckAll(GridView gv, object sender)
{
CheckBox cball = sender as CheckBox;
if (cball != null)
{
for (int i = 0; i < gv.Rows.Count; i++)
{
if (gv.Rows[i].RowType == DataControlRowType.DataRow)
{
CheckBox cb = gv.Rows[i].FindControl("CheckBox1") as CheckBox;
if (cb != null)
cb.Checked = cball.Checked;
}
}
}
}
这样写是不是方便多了,如果有什么问题或者是觉得还可以请留言哦。