ASP.NET 2.0实现自带TreeView的客户端连带选择
2008-11-18 13:38
543 查看
关于TreeView连带选择的功能估计很多人都写过,如果用服务器端事件来写比较方便,但是多了一层服务器端交互,系统易用性也上不太好,所以还是把这些功能的处理放在客户端会好一些。
功能说明:
A、选中某节点后会默认选中其所有子节点和其所有父节点的CheckBox
B、取消选中某节点后会取消选中其所有子节点的CheckBox,如其父节点下尚有其他子节点被选中,则不取消父节点CheckBox,如没有,则取消选中所有父节点的CheckBox
简单写了些客户端代码,可以直接放到JS文件中使用,希望对大家能有帮助。
1、首先是服务器端加一段代码,进行客户脚本注册
this.TVMenus.Attributes.Add("onclick", "CheckEvent();");
2、其次是下面的客户端脚本,我把它直接放到一个专用的JS文件中
功能说明:
A、选中某节点后会默认选中其所有子节点和其所有父节点的CheckBox
B、取消选中某节点后会取消选中其所有子节点的CheckBox,如其父节点下尚有其他子节点被选中,则不取消父节点CheckBox,如没有,则取消选中所有父节点的CheckBox
简单写了些客户端代码,可以直接放到JS文件中使用,希望对大家能有帮助。
1、首先是服务器端加一段代码,进行客户脚本注册
this.TVMenus.Attributes.Add("onclick", "CheckEvent();");
2、其次是下面的客户端脚本,我把它直接放到一个专用的JS文件中
1 //客户端捕捉事件 2 function CheckEvent() 3 { 4 var objNode = event.srcElement; 5 if(objNode.tagName == "INPUT" && objNode.type== "checkbox") 6 { 7 var objParentDiv = objNode.id.replace("CheckBox","Nodes"); 8 if(objNode.checked==true) 9 { setChildCheckState(objParentDiv,true); setParentCheckeState(objNode,true); } else { setChildCheckState(objParentDiv,false); if(!HasOtherChecked(objNode)){ setParentCheckeState(objNode,false); } } } } //判断是否有并行的其他节点被选中 function HasOtherChecked(objNode) { var objParentDiv = WebForm_GetParentByTagName(objNode, "div"); var chks = objParentDiv.getElementsByTagName("INPUT"); for(var i=0;i<chks.length;i++){ if(chks[i].checked && chks[i].id != objNode.id) { return true; } } return false; } //设置父节点 function setParentCheckeState(objNode,chkstate) { try{ var objParentDiv = WebForm_GetParentByTagName(objNode, "div"); if(objParentDiv == null || objParentDiv == "undefined "){ return; } else{ var objParentChkId = objParentDiv.id.replace("Nodes","CheckBox"); var objParentCheckBox = document.getElementById(objParentChkId); if(objParentCheckBox){ objParentCheckBox.checked = chkstate; setParentCheckeState(objParentDiv,chkstate); } } } catch(e){} } //设置子节点 function setChildCheckState(nodeid,chkstate) { var node = document.getElementById(nodeid); if(node){ var chks = node.getElementsByTagName("INPUT"); for(var i=0;i<chks.length;i++){ chks[i].checked = chkstate; } } }
相关文章推荐
- 用jQuery实现asp.net 2.0 treeview控件完全无刷新操作实例(AJAX的增、删、改、选择以及展开收缩节点)
- ASP.NET 2.0 TreeView中用JavaScript实现选择子接点CheckBox是自动选择上父节点(或者所有父节点)
- asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择后自动选择父节点)(TreeView节点精确定位)
- ASP.NET 2.0 中实现 Treeview 与数据库的绑定(含代码)
- ASP.NET 2.0客户端回调的实现分析(2)
- asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择后自动选择父节点)(TreeView节点精确定位)
- (转载)ASP.NET 2.0客户端回调的实现分析 (二)
- [修炼内功]ASP.NET 2.0客户端回调实现无刷新页面
- 使用 asp.net 2.0 自带的TreeView控件显示内联表数据(树状数据)
- ASP.NET 2.0中实现客户端回调的简化版
- ASP.NET 2.0客户端回调的实现分析(1)
- ASP.NET 2.0客户端回调的实现分析
- ASP.NET 2.0客户端回调的实现分析
- ASP.NET 2.0客户端回调的实现分析
- ASP.NET 2.0客户端回调的实现分析
- ASP.NET 2.0客户端回调的实现分析(转载)
- Asp.net 2.0 Treeview 动态填充,并实现无限级树
- ASP.NET 2.0客户端回调的实现例子
- ASP.NET 2.0客户端回调的实现分析
- 【原】父子树的选择【全选/不全选】Asp.Net 2.0 Treeview Checkbox Check/Uncheck All script