2011-02-09 5 views
1

私はJsonStoreを持っている:ExtJS GridPanelがlimitパラメータに注意を払わないのはなぜですか?

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 

私は、次でこの店の負荷を呼び出す:

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

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

+2

+1ただし、JsonReaderのtotalPropertyのデフォルト値は、指定されていない場合は「合計」です。したがって、JsonReaderの設定でこれを指定する必要はありません。 (私はそれがサーバーの応答がこのプロパティを含んでいるかどうか見て価値があることに同意します) –

+0

totalPropertyへの参照 - http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.JsonReader#Ext.data.JsonReader -totalProperty –

3

shane87、要するに

、「明白な」事は、/検出するために、サーバの責任であるという事実は、開始とリミットと背中の唯一の「限界」番号を送信読んですレコード

そうでないと、下記のRobbyのanswerで説明したようにチェックすることが望ましいtotalPropertyを除いて、クライアントコードは正常に見えます。

1

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

関連する問題