2

我需要将 JSON 数据加载到 Tree 或 TreePanel 中。JSON 数据不是来自文件或从 URL 检索,而是动态构建的。

我找不到任何例子。

任何人都可以帮忙吗?

4

2 回答 2

1

您可以通过以编程方式创建根节点来做到这一点。遍历您的数据并继续将子节点附加到您的根节点。这里已经解释得很好:

ExtJS:如何创建静态和动态树

于 2013-06-14T18:44:13.560 回答
1

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

我在这里创建的逻辑是:

  1. 使用 rootVisible: false 和 store:mystore 创建了一个 Tree 类
  2. 我的商店没有代理{},因为我必须从控制器动态设置它
  3. 在商店里面有 autoLoad:false
  4. 使用 mystore.load() 将数据加载到树中

请求进行了 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
            });

对此请分享任何更好的解决方案:)

于 2012-08-30T18:29:58.647 回答