Почему мой ExtJS GridPanel не обращает внимания на параметр limit? - PullRequest
1 голос
/ 09 февраля 2011

У меня есть JsonStore:

var store = new Ext.data.JsonStore({
        root: 'Data.items',
        remoteSort: false,
        fields: ['ClockTime', 'EmpId'],
        proxy: new Ext.data.HttpProxy({
            url: AppRootPath + 'Something/GetSomething',
            method: 'POST'
        })//proxy
});//new Ext.data.JsonStore

Затем я вызываю Load в этом магазине со следующими данными:

store.load({params:{start: 0, limit: 25}});

У меня есть сетка для отображения этих данных:

    var grid = new Ext.grid.GridPanel({
    store: store,
    title:'Employees',
    stateful: true,
    id: 'grid',
    stripeRows: true,
    stateId: 'excp_list',
    bbar: new Ext.PagingToolbar({
        store: store,       
        displayInfo: true,
        prependButtons: true,
        emptyMsg: "No records to display",
        pageSize: 25
    }),
    viewConfig: {
        forceFit: true
    },
    columns: [
        {header: "Emp Id", width: 40, dataIndex: 'EmpId', sortable: true},
        {header: "Clock Time", width: 40, dataIndex: 'ClockTime', sortable: true}
    ]
 });

Я ожидал, что на странице будет отображаться только 25 записей / строк.однако на этой странице отображается только одна страница с общим количеством записей 160.Я что-то упускаю здесь очевидное?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2011

Вам не хватает totalProperty для Store / JsonReader. Это должно быть общее количество записей, это необходимо знать на панели инструментов подкачки, чтобы рассчитать количество страниц и т. Д. Также вашему серверу необходимо отправить обратно правильную страницу и общее количество результатов. Похоже, ваш сервер отправляет обратно все записи и игнорирует параметры start и limit.

3 голосов
/ 09 февраля 2011

shane87,

Короче говоря, "очевидной" вещью, которую вы можете здесь упустить, является тот факт, что на сервере лежит ответственность за обнаружение / чтение запуска и ограничения, а также отправку обратно только ограничения'количество записей .

В противном случае ваш клиентский код выглядит нормально, за исключением totalProperty , который вы можете проверить, как упомянуто в ответе Робби ниже.

1 голос
/ 09 февраля 2011

Параметры, объявленные в конфигурации load (), отправляются как простые HTTP-параметры.В C # вам нужно будет выдать Request ["start"] и Request ["limit"], чтобы получить эти параметры и отправить их на ваш уровень данных.В большинстве случаев ваша база данных должна иметь возможность просматривать возвращаемые наборы результатов / наборы данных и отправлять только эти данные обратно в ExtJS.

...