ExtJS 4 - Как отключить значки «следующий» и «последний» на панели инструментов подкачки, когда в сетке нет записей?

введите здесь описание изображения

У меня есть сетка с панелью инструментов подкачки внизу и кнопкой «Загрузить» вверху, которую можно использовать для загрузки записей в сетку.

Таким образом, изначально в сетке нет значений, но и в этом случае на панели инструментов постраничного просмотра отображается Страница 1 из 1, а также активируются значки для перехода на «следующую» или «последнюю» страницу.

Из-за этого, когда пользователь щелкает любой из этих значков, тогда, хотя записи не загружаются, но внутри значения «страница» и «начало» устанавливаются как NaN, и если затем пользователь нажимает кнопку «Загрузить», тогда эти значения NaN передать на сервер, что не является ожидаемым.

То есть в идеале он должен передавать page=0&start=0, тогда как он передает page=NaN&start=NaN. Сервер не распознает эти значения и выдает ошибку.

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

В) Как отключить значки "следующий", "последний" на панели инструментов постраничного просмотра, когда в сетке нет записей?

Or,

В) Как изменить значения переменных "page" и "start" перед загрузкой магазина, чтобы мы могли передавать 0 вместо NaN?

Я попытался получить доступ к этим параметрам в событии предварительной загрузки хранилища сетки, но там я смог найти такие свойства, как startParam или pageParam, отображающие имя параметра, но не смог найти какой-либо метод доступа/изменения этих значений.

У кого-нибудь есть идеи по этому поводу?

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

PS: используется версия ExtJS 4.


person netemp    schedule 04.10.2011    source источник


Ответы (2)


Одним из возможных решений может быть использование

store.loadPage(1);

вместо store.load();.

Второе возможное решение — изначально отключить панель инструментов и включить ее при загрузке данных:

var grid = Ext.create('Ext.grid.Panel', {
    // ...
    store: store,
    dockedItems: [{
        xtype: 'pagingtoolbar',
        store: store,
        dock: 'bottom',
        disabled: true
    }]
});
store.on('load', function(){
  grid.down('pagingtoolbar').enable();
});
person Molecular Man    schedule 05.10.2011
comment
Спасибо за пост Молекулярный человек. Я использовал код - store.loadPage(1), и он работал нормально. Я также дал отключить/включить панель инструментов после загрузки магазина, но использование disabled:false после загрузки магазина не включило панель инструментов. Любая подсказка по этому поводу? Еще раз спасибо за ваше время Molecule Man. - person netemp; 05.10.2011
comment
@NetEmp, здесь я сделал демонстрацию. Панель инструментов включена, но, как ни странно, ввод панели инструментов не будет включен. Так что, я думаю, включение/выключение не лучшее решение (из-за внутренней ошибки extjs). - person Molecular Man; 05.10.2011
comment
Да и в моем случае тоже не работает. Спасибо за все ответы Molecule Man. Это здорово с твоей стороны. - person netemp; 05.10.2011

проверьте общий счет в ответ, если он не возвращает ноль, когда ваша сетка пуста, тогда будут возникать такие ошибки.

person shashu    schedule 28.12.2011