Gridview 实现列表全选、自动选择下级item的功能
1、 前台关键代码
<asp:TemplateField HeaderText="选择" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="chkitem" runat="server" Enabled="true" Style="cursor: pointer" AutoPostBack="true" OnCheckedChanged="chkitem_selectchange" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkall" runat="server" Text="选择" OnCheckedChanged="chkall_selectchange" AutoPostBack="true"/>
</HeaderTemplate>
</asp:TemplateField>
注意:
AutoPostBack="true" OnCheckedChanged="chkitem_selectchange"
OnCheckedChanged="chkall_selectchange" AutoPostBack="true"
这两行代码分别是实现全选和ITEM单选按钮,如图
实现功能如下:
1、 在列表头点“选择”实现列表项全选或全不选功能
2、 单独选择一个列表时自动根看成“机构ID”实现选择或取消下级机构的选择功能。
后台代码:
在Page.cs页面增加“chkitem_selectchange” 和“chkall_selectchange”两个函数
/// <summary>
/// 全选操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void chkall_selectchange(object sender, EventArgs e)
{
isCheckall = true;
foreach (GridViewRow gvr in this.gv.Rows)
{
CheckBox cb = (CheckBox)gvr.Cells[0].FindControl("chkitem");
cb.Checked = ((CheckBox)sender).Checked;
}
//标志置为初始状态,防止项目里的selectchange事件重复执行
isCheckall = false;
}
/// <summary>
/// 实现自动勾选下级机构功能
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void chkitem_selectchange(object sender, EventArgs e)
{
if (!isCheckall)
{
CheckBox cb = (CheckBox)sender;
GridViewRow gvr = (GridViewRow)cb.Parent.Parent;
string v_code = gvr.Cells[1].Text;
foreach (GridViewRow row in this.gv.Rows)
{
string v_tmp = row.Cells[1].Text;
if (v_tmp.Length >= v_code.Length && v_tmp.Substring(0, v_code.Length).Equals(v_code))
{
CheckBox rcb = (CheckBox)row.Cells[0].FindControl("chkitem");
rcb.Checked = cb.Checked;
}
}
}
}