1

私は 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}
    ]
 });

これにより、1 ページあたり 25 レコード/行しか表示されないことが予想されました。ただし、このページには合計 160 のレコードがある 1 ページしか表示されません。ここで明らかな何かが欠けていますか?

4

3 に答える 3

4

Store/JsonReader の totalProperty がありません。これはレコードの総数である必要があり、ページング ツールバーはページ数などを計算するためにこれを知る必要があります。また、サーバーは正しいページと合計結果数を送り返す必要があります。サーバーがすべてのレコードを送り返し、開始および制限パラメータを無視しているようです。

于 2011-02-09T16:12:44.267 に答える
3

シェーン87、

要するに、ここで見逃しているかもしれない「明らかな」ことは、開始と制限を検出/読み取り、「制限」数のレコードのみを送り返すのはサーバーの責任であるという事実です

それ以外の場合、以下のRobbyの回答で言及されているように、確認したい場合があるtotalPropertyを除いて、クライアントコードは問題ないように見えます。

于 2011-02-09T16:37:52.003 に答える
1

load() 構成で宣言されたパラメーターは、プレーンな HTTP パラメーターとして送信されます。C# では、Request["start"] と Request["limit"] を発行してこれらのパラメーターを取得し、それらをデータ層に送信する必要があります。ほとんどの場合、データベースは返された結果セット/データセットをページングし、そのデータのみを ExtJS に送り返すことができます。

于 2011-02-09T17:09:59.563 に答える