GridView中CheckBox实现全选或反选功能的方法

转自:https://blog.csdn.net/yl_99/article/details/6524826

      添加一个模板列TemplateField.然后,切换到源代码进行后续的编辑.

     在GridView控件中刚刚生成的<asp:TemplateField> </asp:TemplateField>标签对之间,添加一个<HeaderTemplate></HeaderTemplate>标签对和<ItemTemplate></ItemTemplate>标签对.

       我们利用<HeaderTemplate>在列头处显示一个checkbox,用这个checkbox来触发全选和全不选的事件.而在<ItemTemplate>中添加的checkbox则会显示在每一条数据行中.

      下面来看源代码:

<asp:TemplateField>
    <HeaderTemplate>
        <asp:CheckBox runat="server" ID="cbHead" OnCheckedChanged="SelectAll" 
             AutoPostBack="true" Text="全选">
        </asp:CheckBox>
    </HeaderTemplate>
    <ItemTemplate>
        <asp:CheckBox ID="cbItem" runat="server" AutoPostBack="True"    
             oncheckedchanged="ItemCheckBox_CheckedChanged" text-align="center"/>
    </ItemTemplate>
    <ItemStyle Width="50px"/>
</asp:TemplateField>

        上面的代码相信大家肯定看明白了,那如何来实现全选和全不选呢?这就需要编辑SelectAll方法。

        因为当我们点选了列头的checkbox就会触发OnCheckedChanged事件,而我们让该事件调用SelectAll方法,利用该方法来实现效果.要添加该事件,首先要在源代码中添加OnCheckedChanged="SelectAll" AutoPostBack="true" 语句,因为我们需要在点选该checkbox后,就让其它数据行的checkbox也选中,也就是说必须告诉服务器"我已经选中了",只有当服务器接收到该消息,才会执行SelectAll方法.

        而AutoPostBack属性就是用于设置回发的,如果设置为true,表是点选该按钮后,就会将消息传给服务器端,否则就不会将消息传给服务器.

       SelectAll方法如下:

protected void SelectAll(object sender, EventArgs e)
{
   bool isChecked = ((CheckBox)     
   (GridView1.HeaderRow.Cells[0].FindControl("cbHead"))).Checked;
    foreach (GridViewRow gvRow in GridView1.Rows)
    {
        ((CheckBox)(gvRow.Cells[0].FindControl("cbItem"))).Checked = isChecked;
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值