Ext.onReady(function() {
var tempstore = Ext.create('Ext.data.TreeStore', {
root : {
text : '权限列表',
checked : false,//dxuodate
expanded : true,
                children:[
                {
                   text:"节点一"
                   ,checked:false
                   ,leaf:true
                },
                {
                   text:"节点二"
                   ,checked:false
                   ,leaf:true
                },
                {
                   text:"节点三"
                   ,checked:false
                   ,leaf:true
                }]
}
});
var tempTree = Ext.create('Ext.tree.Panel', {
id : 'tempTree',
width : 410,
height : 250,
autoScroll : true,
store : tempstore,
rootVisible : true,
useArrows : true,
iconCls : 'none',
renderTo : Ext.getBody(),
listeners : {
checkchange : function(node, checked) {
        var _isexpanded = node.isExpanded();
if (node.childNodes && node.childNodes.length > 0) {
if (true == checked) {
node.eachChild(function(n) {
n.data.checked = true;
n.updateInfo( {
checked : true
});
});



} else {
node.eachChild(function(n) {
n.data.checked = false;
n.updateInfo( {
checked : false
});
});
}
}
//dxuodate
if (node.data.checked && node.parentNode!=null) {
node.parentNode.data.checked = true;
node.parentNode.updateInfo({checked : true});
}
         
      //判断子选项是佛选中

var childHasChecked=function(node){
    var childNodes=node.childNodes;
    if(childNodes || childNodes.length>0){
        for(var i=0;i<childNodes.length;i++){
             if(childNodes[i].getUI().checkbox.checked){
                  return false;  
             }
         }
         return true;
    }
};
            if(childHasChecked){
    node.data.checked = false;
node.updateInfo({checked : false});
      }
         
         
         
         
         }
         
}
});
});
1父节点选中,子节点全部选中,2子节点一个选中,父节点勾选,
3求教如何做到子节点全部取消掉勾选父节点的勾也要取消掉(三级节点)
谢谢了

解决方案 »

  1.   

    不是太了解extjs,祝楼主早日解决问题。加油
      

  2.   

    update_tree = Ext.create('Ext.tree.Panel', {
      store: tree_update_store,
      multiSelect: true,
      rootVisible: false,
      checkModel:'multiple',
      onlyLeafCheckable:false,
      useArrows: true,
      frame: true,
      width: 300,
      height: 170,
      listeners : {
    checkchange : function(node, checked) {
    var _isexpanded = node.isExpanded();
    getChildNodes(node, checked);
    getParentNodes(node, checked);
    tree.getRootNode().data.checked = false;
    }
    }
      });
    //级联子节点
    function getChildNodes(node, checked){
    if (node.childNodes && node.childNodes.length > 0) {
    if (true == checked) {
    node.eachChild(function(n) {
    n.data.checked = true;
    n.updateInfo({
    checked : true
    });
    getChildNodes(n, checked);
    });
    } else {
    node.eachChild(function(n) {
    n.data.checked = false;
    n.updateInfo({
    checked : false
    });
    getChildNodes(n, checked);
    });
    }
    }
    };//级联父节点
    function getParentNodes(node, checked){
    if (node.parentNode != null) {
    if (true == checked){
    node.parentNode.data.checked = true;
    node.parentNode.updateInfo({checked : true});
    getParentNodes(node.parentNode, checked);
    } else {
    var flag = true;
    node.parentNode.eachChild(function(n) {
    if (n.data.checked){
    flag = false;

    });
    if (flag){
    node.parentNode.data.checked = false;
    node.parentNode.updateInfo({checked : false});
    getParentNodes(node.parentNode, checked);
    }
    }

    }
    };