Extjs 中 Treepanel 实现级联选中效果

treepanel 里添加以下代码即可实现级联选中效果

主要实现了以下效果:

1.点击父级批量设置所有子节点选中状态

2.点击当前节点寻找所有父级并设置选中状态

3.取消当前节点并取消所有子节点选中状态

4.取消当前节点根据需要取消上级节点的选中状态

 1 listeners:{
 2     checkchange:function(node,checked,eOpts){
 3 
 4         // 批量设置子节点选中效果
 5         function setChildChecked(pNode){
 6             pNode.set('checked',checked);
 7             pNode.eachChild(function(child){
 8                 setChildChecked(child);
 9             })
10         }
11         setChildChecked(node);
12 
13         // 当前节点取消选中时 需要判断当前节点的父节点下的所有子节点是否都不是选中状态
14         function setParentCheckedFalse(currentNode){
15             var parentNode = currentNode.parentNode,
16                 isValid = true;
17             if(parentNode != null){
18                 if(checked == false){
19                     parentNode.eachChild(function (child) {
20                         if(child.get('checked') != false){
21                             isValid = false;
22                             return false;
23                         }
24                     });
25                     if(isValid){
26                         parentNode.set('checked',checked);
27 
28                     }
29                 }else{
30                     parentNode.set('checked',true);
31                 }
32                 setParentCheckedFalse(parentNode)
33             }
34         }
35         setParentCheckedFalse(node);
36     }
37 }

 

posted @ 2017-08-22 10:42  半雨微凉  阅读(480)  评论(0编辑  收藏  举报