ExtJS 4 - Как загрузить сеточное хранилище с его параметрами, переносящими последние значения из формы? - PullRequest
2 голосов
/ 26 сентября 2011

У меня есть окно с формой поиска вверху и сеткой внизу.

Пользователь может ввести значения в форму поиска и нажать кнопку - Получить записи.

При нажатии этой кнопки я загружаю хранилище сетки, передавая значения в полях формы в качестве параметров следующим образом:

store.load({
    params:{
        key1:Ext.getCmp('field1').getValue();
    }
});

Я попытался указать параметры в самом прокси-хранилище, но, к сожалению, оно всегда принимает начальные значения (значения при визуализации формы), а не последние, введенные пользователями в полях формы. Ниже приведен метод, который я использовал для присвоения значений параметрам при создании хранилища:

extraParams:{
    key1:Ext.getCmp('field1').getValue();
}

Я хотел искать руководства в двух вещах:

а. При определении хранилища могу ли я убедиться, что хранилище принимает последние / текущие значения из полей формы перед запросом к серверу, чтобы мне не приходилось указывать эти значения при вызове функции load?

Это становится более необходимым, так как внизу у меня есть пейджинговая панель инструментов с кнопкой обновления (наряду со следующими, последними, предыдущими, первыми значками для навигации).

Теперь, когда пользователь нажимает кнопку обновления (или любой значок навигации), магазин загружается без параметров запроса.

Таким образом, вторая вещь:

б. Если ответ «а» таков: передайте последние значения в параметры вручную при вызове функции загрузки - тогда как я могу написать обработчик для кнопки «обновить» и значков навигации (то есть, следующий, последний, предыдущий и первый) в панель инструментов подкачки, чтобы я мог передать последние значения формы для загрузки функции.

Заранее спасибо за любую помощь.

PS: я использую ExtJS 4.

Ответы [ 3 ]

4 голосов
/ 05 июля 2012
yourStore.on('beforeload',function(store, operation,eOpts){
        operation.params={
                  status:cmbStatus.getValue(),
                  value:txtBuscarPor.getValue(),
                  empresa:'saasd',
                  app:'dsads'
            };

},this);
0 голосов
/ 11 октября 2011

Возможным решением для этого является использование события «beforeload» магазина и предоставление списка параметров в нем.Таким образом, всякий раз, когда хранилище загружается, запускается его событие beforeload, и полученные значения всегда самые последние.Надеюсь, это поможет кому-то искать что-то похожее.

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

Относительно вашего вопроса (б) (и потому, что вы особенно просили об этом в разделе комментариев):

Я вижу только один стандартный способ подключения к обработчикам кнопок PagingToolbar, который очень ограничен.

Ext.toolbar.Paging запускает событие beforechange, прежде чем оно фактически изменит текущую страницу. См. API документы . Слушатель, который возвращает false, остановит изменение страницы.

Все другие методы требуют расширения классов Ext, что не составило бы проблем, если бы ComboBox упростил использование вашей собственной реализации BoundList (это класс, который отображает выпадающий список) или передавал параметры конфигурации в BoundList соотв. панель инструментов подкачки.

Я однажды пытался показать это отсутствие гибкости на доске объявлений Ext, но в значительной степени был проигнорирован.

...