网上搜一下关于如何做到在页面层对asp:checkbox控件全选的文章比较少,类似yahoo邮件的客户端全选一样,现在与大家分享一下我的作品:在服务器端写全选不难,但在客户端写的代码有点少了:
eg:
<asp:GridView ID="gdvSelect" runat="server" AutoGenerateColumns="False" OnRowDataBound="gdvSelect_RowDataBound" OnRowDeleting="gdvSelect_RowDeleting" OnRowEditing="gdvSelect_RowEditing" OnRowUpdating="gdvSelect_RowUpdating" DataKeyNames="Id"> <Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkSelectHeader" runat="server" Text="全选" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelectItem" runat="server" /> </ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" HeaderText="选择" Text="选择" /> <asp:TemplateField HeaderText="数量">
<ItemTemplate>
<asp:TextBox ID="txtCount" Text='<%# Eval("Name") %>' runat="server" Width="48px" οnkeyup="javascript:DoCall();" CausesValidation="True" AutoPostBack="true" OnTextChanged="txtCount_TextChanged">
</asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtCount" ErrorMessage="请输入数字" ValidationExpression="^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$">*</asp:RegularExpressionValidator> </ItemTemplate> </asp:TemplateField>
<asp:TemplateField HeaderText="单价"> <ItemTemplate>
<asp:TextBox ID="txtPrice" runat="server" Text='<%# Eval("Obj.Id") %>' Width="52px" οnkeyup="javascript:DoCall();"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtPrice" ErrorMessage="请输入数字" ValidationExpression="^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$">*</asp:RegularExpressionValidator> </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总金额"> <ItemTemplate>
<asp:TextBox ID="txtSum" runat="server" Width="48px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button2" runat="server" Text="操作" CommandName="Edit" />
<asp:Button ID="Button3" runat="server" Text="删除" CommandName="Delete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<script language="javascript" type="text/javascript">
function DoCall()
{var e=event.srcElement;
var row=e.parentNode.parentNode;
var txts=row.all.tags("input");
if(!txts.length|| txts.length<3)
{return;}
var cou=txts[txts.length-5].value;
var price=txts[txts.length-4].value;
if(isNaN(cou)|| isNaN(price)){return false;}
cou=parseFloat(cou);
price=parseFloat(price);
txts[txts.length-3].value=(cou*price).toFixed(2);}
function trims(str)
{return str.replace(" ","");}
//check gridview 中item为checkbox没有被选中时,全选不能被选中,否则全选则被选中;
function check()
{var flag=false;var e=event.srcElement;
var row=e.parentNode.parentNode.parentNode;
var header=row.childNodes[0].all.tags('input')[0];
for(var j=1;j<row.childNodes.length;j++)
{ var itemCheck=row.childNodes[j].all.tags('input')[0];
if(!itemCheck.checked)
{ flag=true;
break; }
}
if(flag)
{ header.checked=false; }
else { header.checked=true; } return true;}
//选中或不选中当前gridview中所有checkbox;
function selectAll()
{var e=event.srcElement;
var row=e.parentNode.parentNode.parentNode;
var header=row.childNodes[0].all.tags('input')[0];
for(var i=1;i<row.childNodes.length;i++)
{var rowNo=row.childNodes[i];
var rowchk=rowNo.all.tags('input');
rowchk[0].checked=header.checked;}
return true;}
</script>
已测试通过,希望能可大家一起分享;