haofenglemon 发表于 2013-2-7 16:59:58

subtreepanel

Ext.namespace("www.haohao.com");

www.haohao.com.Treepanel = function() {
    // 树根
    var rootNode = new Ext.tree.AsyncTreeNode({
      id : '00001',
      text : '目录'
    });
    // 树加载器
    var treeLoader = new Ext.tree.TreeLoader({
      dataUrl : 'xx.html'
    });

    // 当选择节点时影响所有子节点
    var nodeSubCheckChange = function(node, bool) {
      if (node) {
            var childNodes = node.childNodes;
            // 选中或取消所有子节点
            if (childNodes && childNodes.length > 0) {
                var folders = new Array();
                for (var i = 0, len = childNodes.length; i < len; i++) {
                  if(childNodes.getUI().checkbox){
                        childNodes.getUI().checkbox.checked = bool;
                  }
                  // 递归调用将影响所有的子节点
                  if (childNodes.leaf == false) {
                        var tmpNode = childNodes;
                        folders = tmpNode;
                  }
                }
                for(var i=0,len=folders.length;i<len;i++){
                  var tmpNode = folders;
                  tmpNode.getOwnerTree().fireEvent('checkchange', tmpNode, bool);
                }
            }
      }
    };
    // 当选择节点时影响所有的父节点
    var nodeParCheckChange = function(node, bool) {
      if (node) {
            // 对所有的父节点进行选中与取消
            var parentNode = node.parentNode;
            while (parentNode) {
                if(parentNode.getUI().checkbox){
                  parentNode.getUI().checkbox.checked = bool;
                }
                parentNode = parentNode.parentNode;
            }
      }
    };
   
    //获取所有的node
    var getNodes = function(treePanel){
      var startNode = treePanel.getRootNode();
      var r = [];
      var f = function(){
                r.push(this);
      };
      startNode.cascade(f);
      return r;
    };
   
    //真对单选进行处理
    var nodeAllRadioChange = function(node,bool){
      if(!bool){
            return;
      }
      var treePanel = Ext.getCmp('tree-demo-panel');
      var nodes = getNodes(treePanel);
      if(nodes && nodes.length>0){
            for(var i=0,len=nodes.length;i<len;i++){
                if(nodes.id!=node.id){
                  if(nodes.getUI().checkbox){
                        nodes.getUI().checkbox.checked = false;
                  }
                }
            }
      }
    };
    // 树panel
    var treePanel = new Ext.tree.TreePanel({
      id : 'tree-demo-panel',
      autoScroll : true,
      animate : true,
      border : false,
      root : rootNode,
      loader : treeLoader,
      listeners : {
            'beforeload' : function(node) {
                node.attributes.depth = node.getDepth();
            },
            'click' : function(node, event) {
                                    if(node.getUI().checkbox.checked == true){
                                 node.getUI().checkbox.checked = false;
                              }else{            
                                       node.getUI().checkbox.checked = true;
                        }
                  },
            'checkchange' : function(node, bool) {
                //多选
                //nodeSubCheckChange(node, bool);
                //选择子节点则对应的所有父节点必须选择
                //nodeParCheckChange(node, bool);
                //单选
                nodeAllRadioChange(node,bool);
            }
      }
    });
   
    return {
      // 创建window
      createWindow : function() {
            var win = new Ext.Window({
                id : 'treeWin',
                title : 'tree列表',
                pageX : 100,
                pageY : 100,
                width : 250,
                autoHeight : true,
                closeAction : 'close',
                plain : true,
                buttonAlign : "center",
                resizable : false,
                modal : true,
                items : ,
                buttons : [{
                  text : '保存',
                  handler : function() {
                              var selectedNode = treePanel.getSelectionModel().getSelectedNode();
      
               
               
                  }
                }, {
                  text : '取消',
                  handler : function() {
                        win.close();
                  }
                }]
            });
            win.show();
      }
    }
}();
页: [1]
查看完整版本: subtreepanel