Asp.Net TreeView 复选框选择
来源:互联网 发布:python 文本转语音 编辑:程序博客网 时间:2024/05/22 15:39
<asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" onclick="client_OnTreeNodeChecked(event);"> </asp:TreeView>
<script type="text/javascript"> //TreeView onclick 触发事件 function client_OnTreeNodeChecked(event) { //得到当前所 Click 的对象 var objNode; if (!public_IsObjectNull(event.srcElement)) { //IE objNode = event.srcElement; } else { //FF objNode = event.target; } //判断是否 Click 的 CheckBox if (!public_IsCheckBox(objNode)) return; var objCheckBox = objNode; //根据CheckBox状态进行相应处理 if (objCheckBox.checked == true) { //递归选中父节点的 CheckBox setParentChecked(objCheckBox); //递归选中所有的子节点 setChildChecked(objCheckBox); } else { //递归取消选中所有的子节点 setChildUnChecked(objCheckBox); //递归取消选中父节点(如果当前节点的所有其他同级节点也都未被选中). setParentUnChecked(objCheckBox); } } //判断对象是否为空 function public_IsObjectNull(element) { if (element == null || element == "undefined") return true; else return false; } //判断对象是否为 CheckBox function public_IsCheckBox(element) { if (public_IsObjectNull(element)) return false; if (element.tagName != "INPUT" || element.type != "checkbox") return false; else return true; } //得到包含所有子节点的 Node(Div 对象) function public_CheckBox2Node(element) { var objID = element.getAttribute("ID"); objID = objID.substring(0, objID.indexOf("CheckBox")); return document.getElementById(objID + "Nodes"); } //得到父节点的 CheckBox function public_Node2CheckBox(element) { var objID = element.getAttribute("ID"); objID = objID.substring(0, objID.indexOf("Nodes")); return document.getElementById(objID + "CheckBox"); } //得到本节点所在的 Node(Div 对象) function public_GetParentNode(element) { var parent = element.parentNode; var upperTagName = "DIV"; //如果这个元素还不是想要的 tag 就继续上溯 while (parent && (parent.tagName.toUpperCase() != upperTagName)) { parent = parent.parentNode ? parent.parentNode : parent.parentElement; } return parent; } //设置节点的父节点 Checked function setParentChecked(currCheckBox) { var objParentNode = public_GetParentNode(currCheckBox); if (public_IsObjectNull(objParentNode)) return; var objParentCheckBox = public_Node2CheckBox(objParentNode); if (!public_IsCheckBox(objParentCheckBox)) return; objParentCheckBox.checked = true; setParentChecked(objParentCheckBox); } //当父节点的所有子节点都未被选中时,设置父节点 UnChecked function setParentUnChecked(currCheckBox) { var objParentNode = public_GetParentNode(currCheckBox); if (public_IsObjectNull(objParentNode)) return; //判断 currCheckBox 的同级节点是否都为 UnChecked. if (!IsMyChildCheckBoxsUnChecked(objParentNode)) return; var objParentCheckBox = public_Node2CheckBox(objParentNode); if (!public_IsCheckBox(objParentCheckBox)) return; objParentCheckBox.checked = false; setParentUnChecked(objParentCheckBox); } //设置节点的子节点 UnChecked function setChildUnChecked(currObj) { var currNode; if (public_IsCheckBox(currObj)) { currNode = public_CheckBox2Node(currObj); if (public_IsObjectNull(currNode)) return; } else currNode = currObj; var currNodeChilds = currNode.childNodes; var count = currNodeChilds.length; for (var i = 0; i < count; i++) { var childCheckBox = currNodeChilds[i]; if (public_IsCheckBox(childCheckBox)) { childCheckBox.checked = false; } setChildUnChecked(childCheckBox); } } //设置节点的子节点 Checked function setChildChecked(currObj) { var currNode; if (public_IsCheckBox(currObj)) { currNode = public_CheckBox2Node(currObj); if (public_IsObjectNull(currNode)) return; } else currNode = currObj; var currNodeChilds = currNode.childNodes; var count = currNodeChilds.length; for (var i = 0; i < count; i++) { var childCheckBox = currNodeChilds[i]; if (public_IsCheckBox(childCheckBox)) { childCheckBox.checked = true; } setChildChecked(childCheckBox); } } //判断该节点的子节点是否都为 UnChecked function IsMyChildCheckBoxsUnChecked(currObj) { var retVal = true; var currNode; if (public_IsCheckBox(currObj) && currObj.checked == true) { return false; } else currNode = currObj; var currNodeChilds = currNode.childNodes; var count = currNodeChilds.length; for (var i = 0; i < count; i++) { if (retVal == false) break; var childCheckBox = currNodeChilds[i]; if (public_IsCheckBox(childCheckBox) && childCheckBox.checked == true) { retVal = false; return retVal; } else retVal = IsMyChildCheckBoxsUnChecked(childCheckBox); } return retVal; } </script>
0 0
- Asp.Net TreeView 复选框选择
- ASP.NET - TreeView Web 服务器控件中的选择、导航和复选框
- TreeView复选框选择 __JS
- TreeView复选框选择逻辑判断
- C#TreeView复选框的选择
- asp.net 2.0 treeview 复选框全选或全不选(兼容IE和FireFox)
- ASP.NET TreeView级联选择问题
- No 134 · C#TreeView复选框的选择
- TreeView复选框
- ASP.NET 2.0中集联选择TreeView节点
- ASP.NET 2.0中集联选择TreeView节点
- 增加TREEVIEW(ASP.NET)前台级连选择功能
- asp.net TreeView控件Jquery节点选择代码
- Asp.net TreeView来构建用户选择输入的方法
- TreeView&CheckBox(ASP.NET)
- asp.net TreeView
- asp.net treeview 技巧
- Asp.net中Treeview
- 安装GI过程中DD清理磁盘头信息后没有重新oracleasm createdisk 导致重启服务器后找不到ASM磁盘
- 每天一个设计模式: 抽象工厂模式(AbstractFactory)
- 隐藏对象(active为false时)查找
- 欢迎使用CSDN-markdown编辑器
- Android 在webview中 js弹窗无法弹出解决办法
- Asp.Net TreeView 复选框选择
- c# 关于获取exe路径
- 一个例子让你了解Java反射机制
- gem5: classic缓存模型下多bank实现 - mem: model data array bank in classic cache
- Android客户端 和 pc服务器 建立socket连接并发送数据
- Python学习手册 - 09
- 逻辑数据库设计 - 需要ID(谈主键Id)
- 纪念那些年我曾爬过的坑(持续更新)
- Oracle 误删除XDB组件之后的补救