一个新的开始
由于Treeview生成的代码解析出来后CheckBox的name都具有不同的名字,所以网上的大部分checkbox全选,取消的解决方案都不适用。我用的方法首先解决了这个问题,另外还加入了对读取出来的Treeview的选中情况进行判断,是否被全部选中,如果被全部选中,读取出来的时候就把全选的钩钩上。先给大家看看我的前端代码:
function checkAll(layout) { var el = document.getElementById(layout).getElementsByTagName('input'); var len = el.length; for (var i = 0; i < len; i++) { if (el[i].type == "checkbox") { el[i].checked = true; } } } function clearAll(layout) { var el = document.getElementById(layout).getElementsByTagName('input'); var len = el.length; for (var i = 0; i < len; i++) { if (el[i].type == "checkbox") { el[i].checked = false; } } } function checknode(layout, checkboxname) { document.getElementById(checkboxname).checked = true; var el = document.getElementById(layout).getElementsByTagName('input'); var len = el.length; for (var i = 0; i < len; i++) { if ((el[i].type == "checkbox") && (el[i].checked == false)) { document.getElementById(checkboxname).checked = false; } } } |
<input id="Checkboxcheckall" onclick="if(this.checked==true) { checkAll('checkboxlayout'); } else { clearAll('checkboxlayout'); }" type="checkbox" value="on" />全部选中
<div id="checkboxlayout"><asp:TreeView ID="TreeViewGS" runat="server">
<ParentNodeStyle Font-Bold="False" />
</asp:TreeView></div> |
checkAll()方法的作用就是选中全部的节点,clearAll则是清除所有节点选中。相比网上的方法,我的方法只是加入了一个容器,判断选中容器中的checkbox,而不是具有相同name的checkbox。
后台程序C#代码:
//页面加载首次加载时检查选中状态 this.TreeViewGS.Attributes.Add("onclick", "checknode('checkboxlayout','Checkboxcheckall');"); //调用js检查是否全选(使用Ajax回发)。TreeView数据填充时检查是否全选。 ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "checkallchecking", "checknode('checkboxlayout','Checkboxcheckall');", true); |
多线程.....
*cafe.wh创建于1,15 2009.
技术,生活,电影,还有其他...
*cafe.wh版权所有.请勿非法盗链及转载,由此产生的一切后果自负.
welcome to my blog!
Email:whpotter@hotmail.com
Leave a reply