extjs刷新树存储

时间:2012-05-10 17:57:46

标签: extjs tree store

如何刷新树存储?

我试着这样做:

Ext.getStore('myStore').setRootNode({child: []});

然后商店将要求服务器生孩子,但有时它会给我一个双倍的孩子。 在我的树中,我得到类似的东西:

child1
child2
child1

并且还有一个javascript错误:

Uncaught TypeError: Cannot read property 'internalId' of undefined
Ext.define.updateIndexes ext-all-debug.js:61588
Ext.define.onAdd ext-all-debug.js:61513
Base.implement.callParent ext-all-debug.js:3728

这是一个错误还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

我不确定你使用的是什么版本的extjs但是这里是我如何使用load方法在4.1中刷新我的商店(你可能有也可能没有参数,我有一个):

this.getStore('MyTreeStore').load({ params: { id: this.getId().getValue()} });

使用新记录刷新商店,不存在任何先前加载的重复记录。

我的商店设置如下:

Ext.define('MyApp.store.MyTreeStore', {
    extend: 'Ext.data.TreeStore',
    model: 'MyApp.model.MyTreeModel',

    root: {
          children: []
    },

    proxy: {
        type: 'ajax',
        url: '/MyApp/Chart/GetTree'
    },
    fields: [
         { name: 'id', type: 'int' }
    ]
});

我的树看起来像这样:

Ext.define('MyApp.view.chart.MyTree', {
    extend: 'Ext.tree.Panel',
    alias: 'widget.mytree',

    id: 'MyTree',
    store: 'MyTreeStore',
    width: 350,
    height: 320,
    border: false,
    rootVisible: false,
    singleExpand: true
});