makeTreeData:function(root){
var me=this,recordName=this.record,data=[],node,length,i ;
function getTree(records,id){
var c=[];
Ext.Array.forEach(records,function(item,index,array){
if(item["ParentId"]==id){
item[me.root]=getTree(records,item["TemplateId"]);
c.push(item);
}
});
return c;
}
data=root;
for(i=0;i<data.length;i++){
// if(me.nodeDefault)
Ext.apply(data[i],{
leaf:!data[i]["IsFolder"]
});
}
var recs=getTree(data, me.rootId);
return recs;
}
这个方法的关键地方是getTree方法递归调用,根据parentId和id相同,最终形成一个用root【children】变量替代的树形数据,然后可以用于treegrid中
有了这个方法我们平时测试静态数据时候可以很方便创建一个tree类型的store
var treestore= Ext.create("Ext.data.TreeStore",{
model:"SuitModel"
,root:{
name:"all"
,Description:"root"
,TemplateId:0
,children:treeData
,expand:true
}
});
此处的treeData就是上面的makeTreeData产生的。good,收起!