@z0091

ExtJs 4 сохранения фильтров в grid при getStore().reload()

Всем привет!

Для фильтров в grid использую ext.ux.grid.filtersfeature.

Есть проблема. При перезагрузки хранилища, фильтры сбрасываются.

Перезагружаю store так

Ext.widget('itemslist').getStore().reload();

Конфигурация фильтров:

features: [{
        ftype: 'filters',
        autoReload: true,
        encode: true,
        local: false
    }],


Конфигурация store:

autoLoad: true,
    storeId: 'ItemsStore',
    remoteSort: true,
    remoteFilter:true,
    pageSize: 20,
    proxy: {
        type: 'ajax',
        url: '/items/getlist',
        reader: {
            root: 'data',
            totalProperty: 'totalCount',
            type: 'json'
        },
        simpleSortMode: true
    },
    sorters: [{
        property: 'item_name',
        direction: 'DESC'
    }],
    autoLoad: true


Данная проблема приносит много хлопот. Загрузилась grid, отфильтровал - нашел нужный объект, открыл окно, отредактировал, сохранил. Перезагрузил store, но фильтры сбросились. Приходится вновь отфильтровывать.....
  • Вопрос задан
  • 3634 просмотра
Пригласить эксперта
Ответы на вопрос 2
@z0091 Автор вопроса
Случайно нашел следующее решение

Ext.getCmp('items_list_grid').filters.reload();

К сожалению приходится обращаться к объекту по id.
Я не могу понять как из подобной конструкции обратиться через this.

saveChangeItemConfig: function(button) {
        var data = button.up('form').getForm().getValues();
        console.log(data);

        Ext.Ajax.request({
            url: '/items/changeorcreateconfig',
            method: 'GET',
            params: data,
            scope: this,
            success: function(response, opts) {;
                response = Ext.decode(response.responseText);
                if(response.success==1){
                    Ext.getCmp('items_list_grid').filters.reload();
                }else{
                    Ext.MessageBox.alert('Ошибка','Видимо произошла ошибка!');
                }
            },
            failure: function(response, opts) {
                alert('Ошибка!!');
            }
        });
    },
Ответ написан
Комментировать
@lfs
saveChangeItemConfig: function(button) {
        var data = button.up('form').getForm().getValues();
        var grid = button.up('gridpanel');
       //лучше сделать уникальный xtype для вашего грида
    //     var grid = button.up('z0091_gridpanel');
        console.log(data);
        console.log(grid);

        Ext.Ajax.request({
            url: '/items/changeorcreateconfig',
            method: 'GET',
            params: data,
            scope: this,
            success: function(response, opts) {;
                response = Ext.decode(response.responseText);
                if(response.success==1){
                    grid.getStore().filters.reload();
                }else{
                    Ext.MessageBox.alert('Ошибка','Видимо произошла ошибка!');
                }
            },
            failure: function(response, opts) {
                alert('Ошибка!!');
            }
        });
    },
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы