Having the ability to check or uncheck all of the checkboxes which appear inside of a GridView is a frequent requirement. There are several javascript libraries which will handle this on the client-side which is usually the better way to go, but this can also be done server-side and along with an AJAX UpdatePanel can be pretty elegant. Here is a working demo.
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub MasterCheck_Click(ByVal sender As Object, ByVal e As CommandEventArgs)
'Enumerate each GridViewRow
For Each gvr As GridViewRow In GridView1.Rows
'Programmatically access the CheckBox from the TemplateField
Dim cb As CheckBox = CType(gvr.FindControl("Checkbox1"), CheckBox)
Select Case e.CommandName
Case "Check"
'Check all of the checkboxes
cb.Checked = True
'Change the CommandName, CommandArgument and Text of the button
btnMasterCheck.CommandName = "Uncheck"
btnMasterCheck.CommandArgument = "Uncheck"
btnMasterCheck.Text = "Uncheck All"
Case "Uncheck"
'Uncheck all of the checkboxes
cb.Checked = False
'Change the CommandName, CommandArgument and Text of the button
btnMasterCheck.CommandName = "Check"
btnMasterCheck.CommandArgument = "Check"
btnMasterCheck.Text = "Check All"
Case Else
End Select
Next
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Check/Uncheck All Checkboxes in a GridView</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource
id="srcMovies"
ConnectionString='<%$ ConnectionStrings:MyDatabase %>'
SelectCommand="SELECT Title, Director FROM Movies ORDER BY Title"
Runat="server" />
<asp:ScriptManager id="sm1" runat="server" />
<asp:UpdatePanel id="UpdatePanel1" Runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" DataSourceID="srcMovies" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Checkbox id="Checkbox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Title" DataField="Title" />
<asp:BoundField HeaderText="Director" DataField="Director" />
</Columns>
</asp:GridView><br />
<asp:Button ID="btnMasterCheck" runat="server" CommandName="Check" CommandArgument="Check" OnCommand="MasterCheck_Click" Text="Check All" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>