2

如何刷新树商店?

我试图这样做:

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

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

4

1 回答 1

1

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

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
});
于 2012-05-10T21:43:33.410 回答