asp.net gridview中添加checkbox列,用于全部选中记录或取消全选

来源:互联网 发布:gpd pocket 知乎 编辑:程序博客网 时间:2024/04/30 06:18
方法一:使用javascript代码控制

                         前台代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">       <Columns>        <asp:TemplateField >           <HeaderTemplate>                <asp:CheckBox ID="chkHeader" runat="server" onclick="doSelect();"/>            </HeaderTemplate>            <ItemTemplate>                <asp:CheckBox ID="chkSelect" runat="server" />            </ItemTemplate>            <ItemStyle HorizontalAlign="Center" />        </asp:TemplateField>        <asp:TemplateField HeaderText="No" >             <ItemTemplate><%#Container.DataItemIndex + 1%>           </ItemTemplate>            <ItemStyle HorizontalAlign="Center"  />        </asp:TemplateField>            </Columns>    <HeaderStyle CssClass="dvHeader"  /></asp:GridView>
                         后台代码:
    <script language="javascript" type="text/javascript">          function doSelect(){                  var   dom=document.all;                  var   el=event.srcElement;                  if(el.id.indexOf("chkHeader")>=0&&el.tagName=="INPUT"&&el.type.toLowerCase()=="checkbox")               {                     var   ischecked=false;                     if(el.checked)                     ischecked=true;                     for(i=0;i<dom.length;i++)                  {                       if (dom[i].type ==undefined) continue ;                        if(dom[i].id.indexOf("chkSelect")>=0&&dom[i].tagName=="INPUT"&&dom[i].type.toLowerCase()=="checkbox")                           dom[i].checked=ischecked;                  }                  }            }    </script> 
              方法二:在后台编写代码并绑定事件

                         前台代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">        <Columns>         <asp:TemplateField >            <HeaderTemplate>                 <asp:CheckBox ID="chkHeader" runat="server" AutoPostBack ="true" OnCheckedChanged ="chkHeader_CheckedChanged"/>             </HeaderTemplate>             <ItemTemplate>                 <asp:CheckBox ID="chkSelect" runat="server" />             </ItemTemplate>             <ItemStyle HorizontalAlign="Center" />         </asp:TemplateField>         <asp:TemplateField HeaderText="No" >              <ItemTemplate><%#Container.DataItemIndex + 1%>            </ItemTemplate>             <ItemStyle HorizontalAlign="Center"  />         </asp:TemplateField>              </Columns>     <HeaderStyle CssClass="dvHeader"  /></asp:GridView>
                             后台代码:
    ''' <summary>    ''' 全选/反选    ''' </summary>    ''' <param name="sender"></param>    ''' <param name="e"></param>    ''' <remarks></remarks>    Protected Sub chkHeader_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)        For i As Integer = 0 To Me.GridView1.Rows.Count - 1            If CType(Me.GridView1.Rows(i).Cells(0).FindControl("chkSelect"), CheckBox).Enabled Then                CType(Me.GridView1.Rows(i).Cells(0).FindControl("chkSelect"), CheckBox).Checked = CType(Me.GridView1.HeaderRow.FindControl("chkHeader"), CheckBox).Checked            End If        Next    End Sub