zoukankan      html  css  js  c++  java
  • extjs 一个可以把数据建成树形的方法

    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,收起!

  • 相关阅读:
    为什么要把js代码写到<!--//-->中
    js逻辑与,或,非
    你不知道的JavaScript——第二章:this全面解析
    你不知道的JavaScript——this词法
    如何避免用户多次点击造成的多次请求
    通用模块设计UMD
    你不知道的JavaScript——第一章:作用域是什么?
    github 操作
    数组中元素累加 reduce
    流星雨
  • 原文地址:https://www.cnblogs.com/shen119/p/3291434.html
Copyright © 2011-2022 走看看