ext treepanel 级联选择

ext treepanel 实现:全选,全部取消,子节点全部选中,父节点自动选中。
网上查到的,会发现不太好用。
分享代码。

//省略构造树和树的加载器的代码
var  INDEX_CATEGORY_CHECKING = false;
    ADDRESS_NAMESPACE.tree_dept.on('checkchange', function(node, checked) {
    	if (!INDEX_CATEGORY_CHECKING) {
    		INDEX_CATEGORY_CHECKING = true;      
           checkchild(node,checked);
           checkparent(node);
           
             INDEX_CATEGORY_CHECKING=false;
          }
    });
    function checkchild(node,checked){
	    node.eachChild(function(child)
	                 {			
	                 	//debugger;
	                   if(child.childNodes.length>0){
	                   	checkchild(child,checked);//递归
	                   }
	                  //child.on('checkchange',function(node, checked){return false});
	                  child.ui.toggleCheck(checked);    
	                  child.attributes.checked = checked;     
	                  //child.fireEvent('checkchange', child, checked);
	
	           });
    }
    function checkparent(node){
    		   if(!node){return false;}    		  
           	   var parentNode = node.parentNode;
           	   
	           if(parentNode !== null) {   
	            	  var isall=true;
	                  parentNode.eachChild(function(n){
	                  	if(!n.attributes.checked){
	                  		isall=false;
	                  	}                  
	                  });
	                  if(isall){
		                  parentNode.ui.toggleCheck(isall);    
		                  parentNode.attributes.checked = isall;     
	                  }else{
	                  	parentNode.ui.toggleCheck(isall);    
	                  	parentNode.attributes.checked = isall;     
	                  }
	             }
	             checkparent(parentNode);//递归
             };

你可能感兴趣的:(UI,ext)