function CheckAll()
{
var tdid=document.getElementById("<%=gvAppendList.ClientID%>");
var tdRows=tdid.rows.length;
if(tdid.rows[tdRows-1].cells.length==1)
{
tdRows = tdRows - 1;
}
var i;
for (i=1;i<tdRows;i++ )
{
tdid.rows[i].cells[0].getElementsByTagName("input")[0].checked=true;
}
return false;
}
function unCheckAll()
{
var tdid=document.getElementById("<%=gvAppendList.ClientID%>");
var tdRows=tdid.rows.length;
if(tdid.rows[tdRows-1].cells.length==1)
{
tdRows = tdRows - 1;
}
var i;
for (i=1;i<tdRows;i++ )
{
tdid.rows[i].cells[0].getElementsByTagName("input")[0].checked=false;
}
return false;
}
<asp:Button ID="btnCheckAll" runat="server" CssClass="buttonNormal" OnClientClick="return CheckAll();" Text="全选择" />
<asp:Button ID="btnUnCheckAll" runat="server" CssClass="buttonNormal" OnClientClick="return unCheckAll();" Text="全解除" />
http://topic.csdn.net/u/20080311/11/1e42e538-4f28-4355-a545-bbd4ebaec244.html
http://blog.csdn.net/ykhykh/article/details/1445814
http://blog.csdn.net/yl_99/article/details/6524826
添加一个模板列TemplateField.然后,切换到源代码进行后续的编辑.
在GridView控件中刚刚生成的<asp:TemplateField> </asp:TemplateField>标签对之间,
添加一个<HeaderTemplate></HeaderTemplate>标签对和
<ItemTemplate></ItemTemplate>标签对.
我们利用<HeaderTemplate>在列头处显示一个checkbox,
用这个checkbox来触发全选和全不选的事件.而在<ItemTemplate>中添加的checkbox则会显示在每一条数据行中.
下面来看源代码:
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox runat="server" ID="cbHead" OnCheckedChanged="SelectAll" AutoPostBack="true">
</asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbItem"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
上面的代码相信大家肯定看明白了,那如何来实现全选和全不选呢?这就需要编辑SelectAll方法,
因为当我们点选了列头的checkbox就会触发OnCheckedChanged事件,而我们让该事件调用SelectAll方法,
利用该方法来实现效果.要添加该事件,首先要在源代码中添加OnCheckedChanged="SelectAll" AutoPostBack="true"
语句,因为我们需要在点选该checkbox后,就让其它数据行的checkbox也选中,也就是说必须告诉服务器"我已经选中了",
只有当服务器接收到该消息,才会执行SelectAll方法.而AutoPostBack属性就是用于设置回发的,如果设置为true,
表是点选该按钮后,就会将消息传给服务器端,否则就不会将消息传给服务器.
SelectAll方法如下:
protected void SelectAll(object sender, EventArgs e)
{
bool isChecked = ((CheckBox)(GridView1.HeaderRow.Cells[0].FindControl("cbHead"))).Checked;
foreach (GridViewRow gvRow in GridView1.Rows)
{
((CheckBox)(gvRow.Cells[0].FindControl("cbItem"))).Checked = isChecked;
}
}