前面兩篇內容分別介紹了extjs grid的基本用法和extjs grid異步加載數據,這篇文章將介紹extjs grid的分頁。
數據量大的時候我們必須用到分頁,結合上一篇的異步加載數據,今天我們就看看如何異步的加載分頁數據。
在extjs grid的請求中,包含幾個參數,如圖:
page:當前頁
start:起始行的行號
limit:每頁數據行數,默認為25
在請求處理的時候,我們只要獲得這些參數,就可以方便的將想要的分頁后的數據返回給客戶端。
接下來我們新建一個handler,用來處理分頁請求,返回數據:
public class gridPaging : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/json"; Common.HandleResult result = new Common.HandleResult(); int limit = int.Parse(context.Request["limit"]); int page = int.Parse(context.Request["page"]); var list = Entity.UserEntity.UserList.Skip(limit * (page - 1)).Take(limit); result.Set(true, new { total = Entity.UserEntity.UserList.Count, record = list }); string jsonString = JsonConvert.SerializeObject(result); context.Response.Write(jsonString); } public bool IsReusable { get { return false; } } }
然后,修改我們的store,將默認的每頁數據行數改為2(我們的列表中只有6行數據):
var myStore = Ext.create('Ext.data.Store', { model: 'User', autoLoad: true, pageSize: 2, proxy: { type: "ajax", url: "/handlers/gridPaging.ashx", reader: { type: 'json', root: "data.record", totalProperty: "data.total", idProperty: 'ID' } } });
由於采用了分頁,我們返回的json數據的結構也發生了變化,所以reader也進行了相應的改變。
然后刷新看我們的grid,截圖如下:
確實是有兩行數據,但是卻少了我們的分頁工具欄。
接下來我們為grid添加分頁工具欄,通常情況下,我們將工具欄顯示在grid底部,代碼如下:
var win = Ext.create("Ext.Window", { title: "gird demo", width: 300, height: 200, layout: "fit", items: { xtype: "grid", store: myStore, columns: [ { xtype: "rownumberer" }, { text: "姓名", dataIndex: "Name" }, { text: "年齡", dataIndex: "Age" } ], bbar: [ { xtype: "pagingtoolbar", store: myStore } ] } });
pagingtoolbar的store配置一定要和grid的store相同。
截個圖,看看效果:
大概就是這個樣子,我們的grid已經可以進行分頁了,並且是異步的哦