位置:海鸟网 > IT > ASP.NET >

asp.net实现分组全选部分复选框

1.声明控件,分别在页面上方一个CheckBox叫cb5,一个CheckBoxList叫shi2:
protected System.Web.UI.WebControls.CheckBox cb5;
protected System.Web.UI.WebControls.CheckBoxList shi2;

2.在aspx的html代码的head里键入以下函数
<script>
function chkchk(chkid,spanid){
var o=document.getElementById(chkid);
var obj = document.getElementById(spanid);
obj=obj.children;
for(i=0;i<obj.length;i++)
{
e=obj[i];
if(e.type=="checkbox"){
obj[i].checked=o.checked;
}
}
}
</script>
3.在后台编码里添加自定义属性
private void Page_Load(object sender, System.EventArgs e)
{
cb5.Attributes.Add("onclick","chkchk(''"+cb5.ClientID+"'',''"+shi2.ClientID+"'');");
}
4.我们来观察一些自动生成的html代码,我们就明白了
<input id="to1_cb5" type="checkbox" name="to1:cb5" onclick="chkchk(''to1_cb5'',''to1_shi2'');" />
<label for="to1_cb5">市律师协会</label>
<span id="to1_shi2">
<input id="to1_shi2_0" type="checkbox" name="to1:shi2:0" />
<label for="to1_shi2_0">admin</label>
<br>
<input id="to1_shi2_1" type="checkbox" name="to1:shi2:1" />
<label for="to1_shi2_1">5</label>
</span>
5.注意我是把所有的控件放在一个to1的UserControl里面的,所以生成的控件ID前面都带有一个"to1_",又是一下午时间,就整出来一个这个,总感觉asp.net对一些客户端编程结合的不是很好,如果不写脚本,做联动选择的话只能用服务器事件了,这就要每点击一下复选框回传一下窗体,这从性能上考虑是非常不值得的,只能出此下策了.本文的主要知识点是Javascript的文档对象和和控件的嵌套模型,以及给服务器控件加一些客户端行为属性.
最后感谢donet技术交流群的Henman 姐姐的技术支持