TreeView+Checkbox级联操作

步骤1、前台页面拖放一个Treeview,将其ShowCheckBoxes属性设置为All

<asp:TreeView ID="tvCountry" runat="server" ShowCheckBoxes="All">

步骤2、在后台代码中添加Treeview的特性,使得Treeview控件在单击时触发JavaScript实现的级联逻辑

代码

1 protected void Page_Load(object sender, EventArgs e)
2 {
3     // 添加特性
4     //this.tvCountry.Attributes.Add("onclick", "Client_OnTreeNodeChecked(this)");   // 这样写只能IE中使用 
5     this.tvCountry.Attributes.Add("onclick", "Client_OnTreeNodeChecked(event)");    // 这样写IE/FF都可以使用
6 }

步骤3、前台页面添加JavaScript代码

代码

 1 <script type="text/javascript" language="javascript">
 2 // TreeView节点触发事件
 3 function Client_OnTreeNodeChecked(evt){
 4   var obj = getCurrentNode(evt);  // 根据浏览器判断事件
 5   var treeNodeFound = false;
 6   var checkedState;
 7   
 8   if(obj.tagName == "INPUT" && obj.type == "checkbox"){
 9     checkedState = obj.checked;
10     var curNode = getParentNode(obj);
11     changeNodeState(curNode,checkedState);
12   }
13 }
14 
15 // 根据浏览器判断事件
16 function getCurrentNode(evt){
17   var obj;
18 
19   if(window.event){// IE
20     obj = window.event.srcElement;
21   }else{// FireFox
22     obj = (evt?evt:(window.event?window.event:null)).target;
23   }
24   
25   return obj;
26 }
27 
28 // 取得父节点
29 function getParentNode(node){
30   do{
31     node = node.parentNode;
32   }while(node.tagName!="TABLE")
33   return node;
34 }
35 
36 // 改变节点状态
37 function changeNodeState(node,state){
38   // 根据nextSibling属性判断处于同一树层级中紧跟的元素
39   if(node.nextSibling != null && node.nextSibling.tagName == "DIV"){
40     var cbArr = node.nextSibling.getElementsByTagName("INPUT");
41     for (var i = 0; i < cbArr.length; i++){
42       if (cbArr[i].type == "checkbox"){
43         cbArr[i].checked = state;
44       }
45     }
46   }
47   
48   var flag = true;
49   var inputArr = node.parentNode.getElementsByTagName("INPUT");
50   
51   if(state){
52     for(var i=0;i<inputArr.length;i++){
53       if (inputArr[i].type == "checkbox" && !inputArr[i].checked){
54         flag = false;
55       }
56     }
57   }else{
58     flag = true;
59   }
60   
61   if(flag){
62     var parentArr = node.parentNode.previousSibling.getElementsByTagName("INPUT");
63     for(var i=0;i<parentArr.length;i++){
64       if(parentArr[i].type == "checkbox"){
65         parentArr[i].checked = state;
66       }
67     }
68   }
69 }
70 </script>

【运行效果】:

转载于:https://www.cnblogs.com/dajiang02/archive/2010/08/20/1804137.html

【原】TreeView+Checkbox级联操作(IE/FireFox测试通过)相关推荐

  1. 最简单的Asp.Net 2.0 TreeView的Checkbox级联操作

    直接在TreeView的属性上加入:OnClick="OnTreeNodeChecked()" 或者:MyTree.Attributes.Add("OnClick&quo ...

  2. Hibernate_2_Hibernate中对象状态及转化_一级缓存_Session详解_HQL/SQL/Criteria_一对多关系_级联操作

    Hibernate中的对象状态 在Hibernate中持久化对象具有三种状态: 瞬时态, 持久态, 游离态. 瞬时态: 对象没有与Hibernate产生关联(transient,session中没有缓 ...

  3. mysql外键约束语句级连_mysql之外键约束(级联操作等) 父表子表

    不理解的地方标注问号. 网上不同的博客讲的,之间似乎有些矛盾,求推荐好书. 写得不好请指出错误. 父表和子表 当两个表建立一对多关系的时候,"一"的那一端是父表,"多&q ...

  4. Oracle 12C -- truncate的级联操作

    在之前的版本中,存在外键约束时,无法直接truncate父表.在12C中,对truncate操作添加了级联操作特性. 前提是创建外键约束时,使用了"on delete casacde&quo ...

  5. Hibernate一对多关联映射及cascade级联操作

    我们以客户(Customer)与订单(Order)为例 实体类创建 Order订单实体类 //订单-----多的一方 public class Order {private Integer id;pr ...

  6. JPA规范:一对多、一对一、多对多的双向关联与级联操作以及JPA联合主键

    通常在企业开发中,开发Dao层有两种做法:  (1)先建表,后再根据表来编写配置文件和实体bean.使用这种方案的开发人员受到了传统数据库建模的影响.  (2)先编写配置文件和实体bean,然后再生成 ...

  7. EasyUI DataGrid 可编辑列级联操作

    $(function () {var lastIndex;var $dg = $('#dg');$dg.datagrid({width : 600,height : 'auto',title : '可 ...

  8. 多表操作-外键级联操作

    目录 外键的级联更新和级联删除 什么是级联更新 什么是级联删除 添加级联更新 添加级联删除 同时添加级联更新和级联删除 实例演示 添加外键约束,同时添加级联更新和级联删除 添加后测试 外键的级联更新和 ...

  9. 什么是SAN网络?SAN网络上的存储备份和恢复怎么操作?SAN 测试网络存储与服务器架构架构优化

    什么是SAN网络?SAN网络上的存储备份和恢复怎么操作?SAN 测试网络存储与服务器架构架构优化 SAN网络上的存储备份和恢复 我是驰网艾西今天跟大家聊聊什么是SAN网络? SAN(Storage A ...

最新文章

  1. 小技巧:帮你批量删除代码前的行号
  2. 在C++中for、if...内定义的变量在其之外就失效了~
  3. 收集全面WIN7共享设置
  4. Java 摄氏和华氏之间的转换
  5. Android studio连接夜神模拟器详细步骤
  6. 完美解决Ubuntu16.04虚拟机窗口自适应问题
  7. Cookie利用神器:CookieHacker
  8. 酷酷实训计划及测试计划
  9. 设置XenServer中的Linux vm从光驱启动
  10. 说一下自己对于 Linux 哲学的理解
  11. ECShop如何设置默认的配送方式和支付方式
  12. 转换文档参数_1分钟教会你将Excel转换成Word,简单高效,办公人士必备神技
  13. Django例子-出版社
  14. java文件gzip解压_如何在Java中解压缩GZip文件?
  15. 医药行业gsp药店管理软件哪个好用?
  16. 詹克团反攻比特大陆:一场失去人心的自我挽留
  17. 自动获取win10锁屏壁纸脚本
  18. gdal+python计算NDVI
  19. Zhishi.me - Weaving Chinese Linking Open Data
  20. HTML+CSS抗疫网页设计 疫情感动人物静态HTML网页 web前端开发技术 web课程设计 网页规划与设计

热门文章

  1. 用诸葛孔明的智慧,读懂新型数据中心的“四新”机遇与产业逻辑
  2. ubuntu服务器php7.2启用mysqli(不用reboot超简单)
  3. 前端性能优化—将CSS文件放在顶部
  4. CF767C Garland
  5. ARM中 __IO的作用解析
  6. Error:java: JDK isn't specified for module 'bvisioncloud'
  7. 魔兽 如何屏蔽F1键弹出帮助菜单
  8. C#在winform中调用系统控制台输出
  9. php中empty(), is_null(), isset()函数区别
  10. M2 Scrum 12.05