ExtJS4 Изменение параметров хранилища данных - PullRequest
0 голосов
/ 25 января 2012

Если у меня есть хранилище данных в сетке, например:

store = Ext.create('Ext.data.Store', {
    fields: [{
        name: 'id'
    }, {
        name: 'filename'
    }
    // other fields here ...
    ],
    proxy: {
        type: 'ajax',
        url: 'http://myniftyurl.com/blah',
        simpleSortMode: true,
        reader: {
            type: 'json',
            totalProperty: 'total',
            root: 'result'
        },
        extraParams: {
            'limit': Ext.get('itemsPerPage').getValue(),
                'to': Ext.get('to_date').getValue()
            //  other params
        }
    },
    model: 'Page',
    remoteFilter: true,
    remoteSort: true
});

Значение «limit» и «to» будет меняться в зависимости от ввода пользователя, в этом и заключается проблема.Хранилище данных продолжает использовать исходные параметры вместо новых входных данных.Как я могу это исправить?

Заранее спасибо!

1 Ответ

2 голосов
/ 25 января 2012

Обычно я загружаю свои сетки вручную, выполняя store.load () в контроллере.

Таким образом, до этого я могу изменить параметры магазина следующим образом:

//getForm() retrieves the Ext.basic.Form (from Ext.panel.Form)
var params = this.getForm().getValues();

//Write over
grid.getStore().getProxy().extraParams = params;

//load
grid.getStore().load();

Я использую буферизованные сетки, которые потребовали достаточного количества переделок, чтобы полностью заработать в 4.0.7. Но это должно работать для вас.

Другим вариантом является использование beforeload слушателя, но я не уверен, что изменение ExtraParams к тому времени что-нибудь сделает. Возможно, вам удастся изменить объект Ext.data.Operation, который передается в обработчик событий?

Дайте мне знать, как это работает для вас.

Удачи!

...