ExtJS заменить магазин Gridpanel - PullRequest
       43

ExtJS заменить магазин Gridpanel

0 голосов
/ 23 сентября 2011

Есть ли способ удаленно переопределить / заменить хранилище GridPanel?

У меня есть сетка с фиктивным хранилищем, поскольку я получаю сообщение об ошибке, если не объявляю хранилище:

this.ds is undefined

Когда моя форма отправляется, она вызывает GET REST и загружает JSON-хранилище с результатами.Я хочу, чтобы этот магазин был магазином моей сетки и показывал его под панелью формы.Я могу заставить его отображать и возвращать 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 ]

2 голосов
/ 27 сентября 2012

Попробуйте это

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

Я использую это решение, когда хочу прочитать данные с другого URL

1 голос
/ 25 сентября 2011
grid.reconfigure(store, colModel);

У меня отлично работает. Совместим ли formStore.data с конфигурацией столбцов Grid? Вам не нужно указывать модель столбца в вызове reconfigure, если она не изменилась.

Показать фрагмент вашей formStore.data и конфигурацию сетки.

0 голосов
/ 29 сентября 2011

Мне удалось решить эту проблему, переместив jsonStore в саму сетку и сделав его одиночным.Затем ссылка на него из формы с помощью StoreMgr

0 голосов
/ 28 сентября 2011

Должен ли рут быть внутри ридера?Как это

var formStore = new Ext.data.JsonStore({
    proxy: new Ext.data.HttpProxy({
        url: '...',
        method: 'GET'
    }),
    reader: {
        type: 'json',
        root: 'Report'
    },
    fields:[
            ....]
});
0 голосов
/ 23 сентября 2011

Вы пробовали Ext.apply ()?

Из API :

apply (Объект-объект, Конфигурация объекта, По умолчанию-объект): Объект

EDIT:

Вот как вы его используете:

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