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

enter image description here

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

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

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

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

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

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

Или,

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

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

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();
});
1 голос
/ 28 декабря 2011

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

...