方法一:使用javascript代码控制
前台代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField >
<HeaderTemplate>
<asp:CheckBox ID="chkHeader" runat="server" οnclick="doSelect(this,'GridView1');"/>
</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(obj,src){
//var dom=document.all;
//var el=event.srcElement;
var dom = document.getElementById(src).getElementsByTagName("INPUT");
var el = obj;
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