在GridView中加入CheckBox并实现全选的两种方法

来源:互联网 发布:淘宝京天华盛 猫腻 编辑:程序博客网 时间:2024/05/17 02:30

 方法一:用客户端的JavaScript实现

 

前台代码:

 

               <asp:TemplateField>
                    <HeaderTemplate>
                        <input type="checkbox" id="chkAll" name="chkAll" onclick="Check(this,'GridView1')" />
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSelect" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>

 

实现全选的JavaScript:

 

<script language="javascript" type="text/javascript">

        function Check(parentChk, pattern) {
            var elements = document.getElementsByTagName("INPUT");
            for (i = 0; i < elements.length; i++) {
                if (parentChk.checked == true) {
                    if (IsCheckBox(elements[i]) && IsMatch(elements[i].id, pattern)) {
                        elements[i].checked = true;
                    }
                }
                else {
                    if (IsCheckBox(elements[i]) && IsMatch(elements[i].id, pattern))
                    { elements[i].checked = false; }
                }
            }
        }
        function IsMatch(id, pattern) {
            var regularExpression = new RegExp(pattern);
            return id.match(regularExpression);
        }
        function IsCheckBox(chk) {
            return (chk.type == 'checkbox');
        }
    </script>

 

后台代码:

 

for (int i = 0; i < GridView1.Rows.Count; i++)
            {

                //精华都在这条if语句上
                if (((CheckBox)GridView1.Rows[i].Cells[0].Controls[1]).Checked == true)
                {
                    //进行逻辑处理的代码
                }
            }

 

 

方法二:在服务端实现全选

 

<asp:TemplateField HeaderText="全选">
        <HeaderTemplate>
                <asp:CheckBox ID="checkall" runat="server" Text="全选"
                        AutoPostBack="true" OnCheckedChanged="checkAll" />
         </HeaderTemplate>
          <ItemTemplate>
                   <asp:CheckBox ID="check" runat="server" Text="选择" />
            </ItemTemplate>    
</asp:TemplateField>

 

后台:

 

protected void checkAll(object sender, EventArgs e)
  {
       CheckBox cb = (CheckBox) sender;
       if (cb.Text == "全选")
       {
           foreach (GridViewRow gvr in gvLessons.Rows)
           {
               CheckBox cb1 = (CheckBox)gvr.FindControl("check");
               cb1.Checked = cb.Checked;
           }
       }
    }

 

原创粉丝点击