ExtJs如何动态更改treepanel的存储

时间:2013-10-27 12:20:15

标签: json extjs

我想动态更改我的商店。我有extJs树面板,作为window.widget的项目。我想动态更改此面板的存储。我的逻辑如下: aJax请求被发送到我的控制器并且cotroller返回jsonObject。我不会将我的控制器返回的jsonObject设置为我的树面板的新存储,并仅刷新树面板。这是我到目前为止所做的,但动态变化不起作用。 请记住,我用于存储的json对象已创建并存在于内存中。一切正常,直到新商店出现,树不能以我尝试的方式获得商店。

我的商店:

var store = Ext.create('Ext.data.TreeStore', {
    root: {
        id: 'rootNode',
        expanded: true,
        children: childrenParam
    }
});

和我的treepanel:

xtype: 'treepanel',
region: 'west',
id: 'navigation',
title: 'Tree of builds',
width: "30%",
height: "100%",
layout: 'fit',
rootVisible: false,
store: store,
split: true,
autoScroll: true,
collapsible: true,
floatable: false
...

我试过的是:

var myPanel = Ext.getCmp('navigation');
myPanel.store.tree.root.childNodes = result;

其中result是从我的控制器返回的json对象。这个json对象很好,但是商店的更改工作不正常。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

希望这会有所帮助:

   treePanel.reconfigure(myNewStore, newStoreCols);

然后你必须调用这段代码:

    myNewStore.setRootNode(myNewStore.getRootNode());

答案 1 :(得分:0)

你也可以使用Ext.getCmp('treepanelId').setStore(myNewStore);