刚刚看了..NET中遍历DataList控件,像MSN中的全选
的文章,突然想起我也做过类似功能,就是把控件里的行循环一次,这样一来会产生一个PostBack,要服务期端进行处理,我想这样一来好象对资源进行了浪费。
看下面的datagrid代码
<
asp:TemplateColumn
HeaderText
="删除文章"
>
< HeaderTemplate >
删除文章
< input type ="checkbox" id ="checkDel" title ="全选/全取消删除文章" onclick ="CheckDelBox(this)" />< font color =#ff0000 size =1 > 全选/全取消 </ font >
</ HeaderTemplate >
< ItemTemplate >
< asp:CheckBox id ="deleteCheckbox" runat ="server" AutoPostBack ="False" ></ asp:CheckBox >
</ ItemTemplate >
</ asp:TemplateColumn >
< HeaderTemplate >
删除文章
< input type ="checkbox" id ="checkDel" title ="全选/全取消删除文章" onclick ="CheckDelBox(this)" />< font color =#ff0000 size =1 > 全选/全取消 </ font >
</ HeaderTemplate >
< ItemTemplate >
< asp:CheckBox id ="deleteCheckbox" runat ="server" AutoPostBack ="False" ></ asp:CheckBox >
</ ItemTemplate >
</ asp:TemplateColumn >
我在选择id="checkDel" 的选择框时,要对模版中的deleteCheckbox进行全选和全取消
我调用了js
function CheckDelBox(box)
{
for ( var i = 0 ;i < document.Form1.elements.length;i ++ )
{
var e = document.Form1.elements[i];
if ( (e.type == 'checkbox') )
{
var o = e.name.lastIndexOf('deleteCheckbox');
if (o !=- 1 )
{
e.checked = box.checked;
}
}
}
}
注意这段代码
var o=e.name.lastIndexOf('deleteCheckbox');
在某些情况下,id在客户端的呈现不是在aspx中你指定的id了,而是控件.ClientID,比如在DataGrid中放置的一些服务器端控件,查看一下源代码可以看到id是类似DataGrid1__ctl5_Hyperlink1而不是你指定的id了
所以我得做相应判断
大家还可以参考
http://www.cnblogs.com/lovecherry/archive/2005/03/25/125516.html