kendo ui 中grid 算是最長用的控件之一,當使用分頁效果時,我們要傳遞分頁參數與自己定義的參數如:
1 var dataSource = new kendo.data.DataSource({ 2 transport: { 3 read : { 4 url : "對應后台路徑", 5 contentType : "application/json", 6 type : "POST", 7 dataType : "json" 8 }, 9 parameterMap : function(options, operation) { 10 if (operation == "read") { 11 var parameter = { 12 page : options.page, 13 pageSize : options.pageSize, 14 take : options.take, 15 skip : options.skip 16 }; 17 return kendo.stringify(parameter); 18 } 19 } 20 }, 21 serverPaging: true, 22 pageSize: 20, 23 schema : { 24 model : { 25 id : "", 26 }, 27 data: function (response) { 28 return response.data; 29 }, 30 total: function (response) { 31 return response.total; 32 } 33 }, 34 });
對應的grid寫法為:
$("#XXXX").kendoGrid({
dataSource : dataSource,
height: ,
toolbar: kendo.template($("#template").html()),
pageable: {
refresh: true,
pageSizes: true,
buttonCount: 5,
page: 1,
pageSize: 20,
pageSizes: [20, 50, 100, 500]
},
columns: [
{field : "XX", title :"XX" },
{field : "XX", title :"XX" },
{field : "XX", title :"XX" },
{field : "XX", title :"XX" },
{field : "XX", title :"XX" },
],
selectable: "row",
sortable:true,
resizable: true
}).data("kendoGrid");
后台解析方法(JAVA后台)當:
@Override public String XXX(String info) { JSONObject json = JSONObject.fromObject(info); PageBounds pageBounds = new PageBounds(Integer.parseInt(json.get("page").toString()), Integer.parseInt(json.get("pageSize").toString())); Map<String,Object> map = new HashMap<String, Object>();//注意這里定義了一個空的map沒有賦值,是為了占位,如果需要可以賦值 PageList<Map<String, Object>> list = (PageList<Map<String, Object>>) XXXDao.XXX(pageBounds,map); try { list = (PageList<Map<String, Object>>) XXXDao.XXX(pageBounds,map); } catch (Exception e) { logger.error("獲取信息列表失敗! 具體信息為: " + e); } JSONObject jsonObj = new JSONObject(); jsonObj.accumulate("data", JSONArray.fromObject(list)); jsonObj.accumulate("total", list.getPaginator().getTotalCount()); return jsonObj.toString(); }
dao層impl代碼
@Override public List<Map<String,Object>> XXX(PageBounds pageBounds,Map<String,Object> map) { return sqlSessionTemplate.selectList("XXDao.XXX",map,pageBounds); }
此處特別需要注意的是selectList()內部傳遞的是三個參數,第一個大家都知道是dao層的路徑,第二個是頁面內的其他參數(比如你需要從前台傳到后台的用戶ID等等),第三個就是你解析的前台grid分頁參數,如果當你頁面不需要傳遞其他參數的時候,第二個參數需要用一個變量占位,這個變量可以是NULL,數字,或者一個空變量都可以。如果不傳參數的話會報錯。無法解析。
