EXTJS 3.4动态地将JSON数据加载到TREE中

时间:2012-07-31 17:29:24

标签: json extjs treepanel

我需要将JSON数据加载到Tree或TreePanel中。 JSON数据不是来自文件,也不是从URL重新获得,而是即时构建的。

我找不到任何例子。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

当我尝试创建一个在搜索字段中搜索某些内容的Treegrid时(需要在URL中传递此内容),我发现了一些奇怪的行为。

我在这里创建的是逻辑:

  1. 使用rootVisible创建一个Tree类:false并存储:mystore
  2. 我的商店没有代理{},因为我必须从控制器
  3. 动态设置它
  4. 商店内部autoLoad:false就在那里
  5. 使用mystore.load()将数据加载到树
  6. 请求进行了2次 树中的空白根节点,尽管我没有根节点。

    我用以下方式修复它...不确定扫描延伸这是正确的。任何更好的解决方案请分享

    树类(视图)

                Didn’t define any treestore inside tree view
                rootVisible: false
    

    控制器内部

    search: function(button){
    
                var searchText = this.getSearchField().value;
    
    
                //created a store instance
    
                var mystore = Ext.data.StoreManager.lookup('MyTreeStore');
    
                mystore.setProxy({
                                     type: 'ajax',
                                     url: 'app/searchid/'+searchText;
                                 });
    
    
                var mytree = Ext.create('AM.view.MyTree',{store:mystore});
    
                Ext.getCmp('tn').add(mytree);
    
                //DON’T USE store.load() method As we have set rootVisible: false so it will automatically try to load the store or will send the request
    

    }

    存储文件

                Ext.define('AM.store.BomTreeStore', {
    
                    extend: 'Ext.data.TreeStore',
    
                    model: 'AM.model.BomTree',
    
                    autoLoad: false,
    
                    folderSort: true
                });
    

    这个PLZ分享的任何更好的解决方案:)

答案 1 :(得分:1)

您可以通过以编程方式创建根节点来完成此操作。 迭代您的数据并继续将子节点附加到根节点。 这里有很好的解释:

ExtJS: How to create static and dynamic trees