2011-02-09 45 views
1

我有一個JsonStore:爲什麼我的ExtJS GridPanel不關注極限參數?

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

我預計這將只顯示每頁25個記錄/行。但它只顯示一頁,並在此頁面上共有160條記錄。 我在這裏錯過了一些明顯的東西嗎?

回答

4

您缺少Store/JsonReader的totalProperty。這應該是記錄的總數,分頁工具欄需要知道這個以計算頁數等。另外,您的服務器需要發回正確的頁面和總計結果計數。看起來你的服務器正在發回所有的記錄,並忽略了開始和限制參數。

+2

+1但JsonReader的totalProperty默認爲'total'(如果未指定)。所以它是*不是強制性的*在你的JsonReader的配置中指定這個。 (我同意值得查看服務器響應是否包含此屬性) – 2011-02-09 16:35:11

3

shane87,

總之,「顯而易見」的東西,你可以在這裏缺少的是的事實,這是服務器的責任,檢測/讀取開始和限制並傳回的只有「限制」號記錄

否則,您的客戶端代碼看起來不錯,除了您可能想要檢查的totalProperty,如下面Robby的answer所述。

1

load()配置中聲明的參數是作爲普通的HTTP參數發送的。在C#中,您必須發出Request [「start」]和Request [「limit」]來獲得這些參數,並將它們發送到您的數據層。在大多數情況下,您的數據庫應該能夠對返回的結果集/數據集進行分頁,並只將該數據發送回ExtJS。