ExtJS替换Gridpanel存储

时间:2011-09-23 14:04:30

标签: json extjs grid store

是否有远程覆盖/替换GridPanel的商店?

我有一个有虚拟商店的网格,因为如果我没有声明为商店,我会收到错误:

this.ds is undefined

提交表单后,它会进行GET REST调用&使用结果加载JSON存储。我希望这个商店成为我网格的商店,并将其显示在formPanel下面。 我可以让它显示&返回JSON但似乎无法替换商店。

我尝试过使用 searchGrid.store = formStore //从表单提交返回的JSONStore

修改 这个如果数据存储:

var formStore = new Ext.data.JsonStore({
    proxy: new Ext.data.HttpProxy({
        url: '...',
        method: 'GET'
    }),
    root: 'Report',
    fields:[
            ....]
});

这是商店的加载/更改:

var data = this.getForm().getValues();

        formStore.load({
            params: {
                fields: Ext.encode(data)
            }
        });

        var grid = Ext.getCmp('search');

        Ext.apply(grid, {store: formStore});
        grid.show();

5 个答案:

答案 0 :(得分:2)

试试这个

myGridPanel.getStore().proxy.setApi({read: url});
myGridPanel.getStore().load();

当我想从另一个网址

读取数据时,我正在使用此解决方案

答案 1 :(得分:1)

grid.reconfigure(store, colModel);

对我来说很好。 formStore.data是否与Grid的列配置兼容?如果没有更改,则无需在reconfigure调用中指定列模型。

显示formStore.data和网格配置的一部分。

答案 2 :(得分:0)

您是否尝试过Ext.apply()?

来自api

  

apply(Object object,Object config,Object defaults):Object

编辑:

以下是您使用它的方式:

Ext.apply(myGrid, { store : mystore }); //no need for the third parameter, but if you do want a default, then you can use one

答案 3 :(得分:0)

根应该在读者内部吗?喜欢这个

var formStore = new Ext.data.JsonStore({
    proxy: new Ext.data.HttpProxy({
        url: '...',
        method: 'GET'
    }),
    reader: {
        type: 'json',
        root: 'Report'
    },
    fields:[
            ....]
});

答案 4 :(得分:0)

我设法通过将jsonStore移动到网格本身并使其成为单身来解决这个问题。然后使用StoreMgr

从表单中引用它