`
atian25
  • 浏览: 462492 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ExtJS Tree载入自定义数据

阅读更多

回答问题:http://www.iteye.com/problems/20463

 

一般情况下最好是能在后台组装好格式再传递给前台展示.

但是如果基于某些设计上的原因或者是后台不可控的情况下,

可以在前台转换,

方法有很多种,一种是在前台遍历数据,构造出符合tree的数据.

还有一种是直接遍历添加到Tree,如下:

 

Ext.onReady(function(){  
  Ext.BLANK_IMAGE_URL = '/images/s.gif';  
  Ext.QuickTips.init();  
  testTreeCustomData();  
});  
  
function testTreeCustomData(){
  //如下数据,要求是对于unit_path为11或12的是1的子节点,111、112为11的子节点,121、122为12的子节点,以此类推。 
  var dataArr = [  
    {unit_path:1,text:1},  
    {unit_path:11,text:11},  
    {unit_path:12,text:12},  
    {unit_path:111,text:111},  
    {unit_path:121,text:121},  
    {unit_path:112,text:112},  
    {unit_path:122,text:122}  
    //,{unit_path:222,text:'xx'}  
    //,{unit_path:132,text:'xx'}  
  ];  
    
  var tree = new Ext.tree.TreePanel({  
    useArrows: true,  
    autoScroll: true,  
    animate: true,  
    collapsible:true,  
    containerScroll: true,  
    frame:true,  
    width:200,  
    height:400,  
    renderTo:document.body,  
    autoHeight:true,  
    //rootVisible:false,  
    root:new Ext.tree.TreeNode({  
      //id:'root',  
      text: '根节点',  
      expanded:true,  
      draggable: false  
    }),  
    loadCustomData:function(dataArr){  
      for(var i=0;i<dataArr.length;i++){  
        var obj=dataArr[i];  
        var path=obj.unit_path.toString();  
        var parentNode=null;  
        var node = new Ext.tree.TreeNode({  
          //id: path,  
          text: obj.text,  
          //自定义属性,可以在后文通过node.attributes.unit_path读取
          unit_path: path,  
          qtip:'',  
          draggable: false  
        });  
          
        //如果没有该属性,或者属性长度为1,则放到根节点  
        parentNode = this.root;  
        if(!Ext.isEmpty(path)){  
          for(var j=0;j<path.length-1;j++){  
            //从头到尾找到父节点  
            parentNode = parentNode.findChild('unit_path',path.substring(0,j+1));  
            //TODO:判断异常情况,如有path=132,但是对应的13节点不存在。  
            //parentNode = Ext.value(parentNode.findChild('unit_path',path.substring(0,j+1)),parentNode);  
           }  
        }  
        parentNode.appendChild(node);  
      }  
    }  
  });  
  tree.loadCustomData(dataArr);  
  tree.expandAll();  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics