ExtJS 학습노트 - 확인란 tree의 모/자 노드 연결

2258 단어 ExtJs
  • 부모 노드를 선택하고 모든 하위 노드도 선택됩니다
    tree.on('checkchange',function(node,flag){
        node.expand();
        node.attributes.checked=flag;
        // 
        node.eachChild(function(child){
              child.ui.toggleCheck(flag);
              child.attributes.checked=flag;
              child.fireEvent('checkchange',child,flag);
        });
    },tree);
  • 하위 노드를 선택하고 부모 노드도 선택됩니다
    tree.on('checkchange', function(node, flag) {  
                    if(node.parentNode.id!='root'){// root 
                             // 
                              if(flag||tree.getChecked(id,node.parentNode)==""){
                                 node.parentNode.ui.toggleCheck(flag);
                                 node.parentNode.attributes.checked=flag;
                                 node.parentNode.fireEvent('checkchange',node.parentNode,flag);// 
                              }
                     }
                }, tree); 
    
  • 앞의 두 가지는 모두 인터넷에서 찾은 자원이다. 마지막으로 이 점은 위의 결합만 하면 부자 노드의 연결을 실현할 수 있다
    tree.on('checkchange',function(){
      if(node.hasChildNodes()){
           node.cascade(function(node){
                node.attributes.checked=flag;
                node.ui.checkbox.checked=flag;
                return true;
           });
    
           var pNode = node.parentNode;
            for(;pNode.id!='root';pNode=pNode.parentNode){
                if(flag|| tree.getChecked(id,node.parentNode)==""){
                        pNode.ui.checkbox.checked=flag;
                        pNode.attributes.checked=false;
                   }
            }
      }else{
             if(flag&&node.parentNode.id!='root'){
                  node.parentNode.ui.checkbox.checked=flag;
                  node.parentNode.attributes.checked=false;
              }else{
                   node.ui.checkbox.checked=flag;
                   node.attributes.checked=flag;
               }
       }
    });
  •  : ExtJS tree, , , 。 , 。—— , !
  • 좋은 웹페이지 즐겨찾기