大家好。。我现在遇到一个问题就是在extjs 中的tree问题..我是想实现判断树的父节点是否被选中,如果选中就累加父节点下面的所有子节点id的总和具体是这样子的:比如父节点A,下面有A1,A2 ,A3,如果我选中了A,那么如果A1,A2,A3都被选中的话,就累加,如果只选中了A2,A3,那么就累加A2和A3,请问下这个要怎么实现。谢谢了..

解决方案 »

  1.   

    这个问题木有难度 ~去google   Ext.ux.TreeCheckNodeUI 我给你找了一个,http://blog.csdn.net/weil001/article/details/4008016 
    关键代码是在treepanel创建成功,不报错之后,
     
    if(!treePanel){ 
           var govNode = new Ext.tree.AsyncTreeNode( {
    text : '机构',
    draggable : false,
    id : 'root' 
    });
    treePanel = new Ext.tree.TreePanel( {
    el : 'roleTreeDiv',
    autoScroll : true,
    animate : true,
    root : govNode,
    line : true,
    selMode : true,
    rootVisible : true,
    loader : false,
    border : false,
    checkModel: 'cascade',   //对树的级联多选  
         onlyLeafCheckable: false,//对树所有结点都可选
    width:226,
    height:330,
    loader : new  Ext.tree.DWRTreeLoader({    
                       dataUrl:dwrRoleInfoService.getRoleInfoTree2 , 
                       baseAttrs: { uiProvider: Ext.ux.TreeCheckNodeUI } ,
                        listeners : {  
                                  'beforeload' : function( node) {  
                                       treePanel.getLoader().args[0]=(node.id!='root'?node.id:"00");  
                                    }  
                       }  
                   })  
    });
    govNode.expand(true); 
    treePanel.render();

     }
      var ids = treePanel.getChecked("id"); //ids.length就是所有的节点数  id 对于数据源返回回来的ID
      if(var i=0;i<ids.length;i++){  
       if(treePanel.getNodeById(ids[i]).isLeaf()){ // 咯,这里判断是否为子节点或者是父节点
    rmap[m]=ids[i];//每行对象
      
     }
     }