GridView 全选

在使用GridView控件的时候,有时候需要GridView控件有选择框列,勾选或反选某一行数据,选择所有行数据或者反选所有行数据,勾选某一行数据时可能还要判断是否所有行数据都已勾选从而控制“全选”选项是否需要选中,下面的实例将实现以上功能:

第一步:在页面中加一个隐藏域,用来放置选择的键值

<input id="TextBox1" runat="server" style="width: 39px" type="hidden" />

第二步:给GridView添加模板列,包括头模板和项模板:头模板加一个选择框,选择的时候调用一个名为selectAll(this)的JavaScript function,该function选择或反选GridView中的所有项,并将选择的项的键值保存在第一步添加的隐藏域中,项模板也加一个input type="checkbox"的选择框,value值为绑定的键值,选择的时候调用一个名为AddRemoveValues(this)的JavaScript function,该function将选择或反选GridView项的键值添加到隐藏域或从隐藏域中移除

<asp:TemplateField HeaderStyle-HorizontalAlign="left">
                    <HeaderTemplate>
                        <asp:CheckBox id="chk_SelectAll" Text="全选" runat="server" checked="false" οnclick="javascript:return selectAll(this)" />
                    </HeaderTemplate>
                   <ItemTemplate>                  
                      <input type="checkbox" id="chkSelect" runat="server" checked="false" οnclick="AddRemoveValues(this)"
                      Value='<%# DataBinder.Eval(Container.DataItem,"ID") %>' name="chkSelect"/>                                 
                   </ItemTemplate>
                </asp:TemplateField>

第三步:在GridView的DataBound事件中加入以下代码,使GridView选中的数据项在翻页以后再回到原来的数据页仍然能够被选中

                HtmlInputCheckBox chkSelect = (HtmlInputCheckBox)e.Row.FindControl("chkSelect");
                HtmlInputHidden txtHidden = (HtmlInputHidden)Page.FindControl("TextBox1");
                string txtHiddenValue = txtHidden.Value.ToString();
                if (txtHiddenValue.Contains(chkSelect.Value.ToString().Trim()))
                {
                    chkSelect.Checked = true;
                }

第四步:添加JavaScript function

function AddRemoveValues(oChk)    //选择或反选单项时调用的function
    {
         if(oChk.checked)
         {
             document.getElementById('TextBox1').value +=oChk.value + "," ;
             var allSelect = true;
             for(var   i=0;i<form1.elements.length;i++)  
             {  
                 if(form1.elements[i].type=="checkbox")  
                 {
                     if(form1.elements[i].checked == false && form1.elements[i].id != "chk_SelectAll")
                     {
                         allSelect = false;
                     }
                 }
             }
            
             if(allSelect)
             {
                 document.getElementById('chk_SelectAll').checked = true;
             }
         }
         else
         {
             document.getElementById('TextBox1').value = document.getElementById('TextBox1').value.replace(oChk.value+",","");
             document.getElementById('chk_SelectAll').checked = false;
         }
    }

function selectAll(chkAll)   //全选或反选时调用的function
    {
        if(chkAll.checked)
        {
            var txt = document.getElementById('TextBox1');
            for(var   i=0;i<form1.elements.length;i++)  
            {  
                if(form1.elements[i].type=="checkbox")  
                {
                    form1.elements[i].checked = true;
                    if(form1.elements[i].value != "on")
                    {
                        txt.value += form1.elements[i].value + ',';
                    }
                }
            }
        }
        else
        {
            for(var i=0;i<form1.elements.length;i++)  
            {  
                if(form1.elements[i].type=="checkbox")  
                {
                    form1.elements[i].checked = false;
                }
            }
            document.getElementById('TextBox1').value = '';
        }
    }

第五步:在页面后台代码中获取选择的ID

string IDList = TextBox1.value.TrimEnd(new char[] { ',' });  //去掉结尾的逗号,得到键值集合,如:"1,2,3"

现在,选中项的键值集合就获取好了,需要利用这个集合做什么就看个人的意愿了。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值