Extjs TreePanel 完美实现

treepanel.on('change',function(node,checked){

    treecheck(node,checked);//调用下列方法

});

 

树形控件的选择
 var treecheck=function(node,checked){
     node.expand();
     if(node.hasChildNodes()){
       ChildWithParent(node,checked);
     }
     //如果是选中状态,则选中所有父节点
     if(checked){
       ParentWithChild1(node,checked);   
     }
     //如果不选中
     else{
        ParentWithChild2(node,checked);
     }
 }
 //选择结点,影响所有子节点
 var ChildWithParent=function(node,bool){
  if(node){
   node.attributes.checked = bool;
   if(node.hasChildNodes()){
    node.eachChild(function(child){
     child.ui.toggleCheck(bool);
     child.attributes.checked = bool;
     ChildWithParent(child,bool);
    });
   }
  }
 }
 //如果是选中状态,则选中父节点---递归
 var ParentWithChild1=function(node,bool){   
  if(node.parentNode.getUI().checkbox){
   var parent=node.parentNode;
   parent.attributes.checked=bool;
   parent.getUI().checkbox.checked=bool;
   ParentWithChild1(parent,bool);
  }
 }
 //如果是不选中状态,则遍历父节点,如果该父节点下的所有节点都为不选中,则取消选中
 var ParentWithChild2=function(node,bool){
  if(node.parentNode.getUI().checkbox){
   var parent=node.parentNode;    
   var temp=false;
   parent.eachChild(function(child){
    if(child.getUI().checkbox.checked==true){
     temp=true;
     return false;
    }    
   });   
   if(!temp){
    parent.attributes.checked=bool;
    parent.getUI().checkbox.checked=bool;
    temp=false;
    ParentWithChild2(parent,bool);
   }
  }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值