日期:2014-05-16  浏览次数:20386 次

Extjs tree 的级联选择
/**
*  树级联选择节点
*/
function changeAllNode( node,isCheck){
allChild(node,isCheck);
allParent(node,isCheck);
function allChild (nodec,isCheckc){
var chileNodes  = nodec.childNodes;
// alert(chileNodes.length);
Ext.Array.each(chileNodes,function(nd){
if(nd.hasChildNodes()){
nd.set('checked',isCheck);
allChild(nd,isCheckc);
} else {
nd.set('checked',isCheck);
}
});
}
  function allParent (nodep,isCheckp){
  if(!isCheckp){
      nodep.set('checked',isCheck);
  if(brothNodesIsTrue(nodep)){
//   兄弟节点有选中的节点
  } else{
      if(nodep.getDepth()>1){
  allParent(nodep.parentNode,isCheckp);
  }
  }
  } else{
  if(nodep.getDepth()>1){
  nodep.set('checked',isCheck);
  allParent(nodep.parentNode,isCheckp);
  } else{
  nodep.set('checked',isCheck);
  }
  }
  }
  function brothNodesIsTrue(node){
          var flag =false;
      var brothNodes=node.parentNode.childNodes;
      Ext.Array.each(brothNodes,function(bn){
if(bn.get('checked')){
flag =true;
return false;
}
});
return flag;
  }
}