Extjs TreePanel选中子节点默认选中父节点,取消勾选父节点子节点默认取消

首先在TreePanel里面加一个事件checkchange

然后在事件里写入一下内容:

// checkchange事件

checkAllchild_click : function(node,checked){
     var me=this;
      if (node.data.leaf == false) {  
               if (checked) {  
                   // 打开节点  
                   node.expand();  
                   // 遍历孩子  
                   me.setChildNode(node.childNodes,checked);
               } else {  
                   node.expand();  
                   me.setChildNode(node.childNodes,checked);
               }  
           } else { // 单击叶子时候  
               if (checked) { // 未被选中时,取消父节点的选择状态  
              me.setParentNode(node,checked);
               }  
           }  
       },
       //反选父节点
        setParentNode:function(node,checked){
      node.set('checked', checked);  
            if(node.parentNode!=null){
           this.setParentNode(node.parentNode, checked); 
            }
      },
    //选子节点
        setChildNode: function (childNodes,checked){
        var node;
              for(var i=0;i<childNodes.length;i++){
                node= childNodes[i];
                node.set('checked', checked);  
                if(node.childNodes.length>0){
                this.setChildNode(node.childNodes, checked); 
                }
              }
      }


最后注意一点复选框必须是自己后台传过来的,必须是自己写的,不能用工具画(比如sencha),否则无效。

发布了31 篇原创文章 · 获赞 24 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/hengliang_/article/details/78809497