jQuery EasyUI Pagination實(shí)現(xiàn)分頁(yè)的常用方法
EasyUI 的 datagrid 支持服務(wù)器端分頁(yè),但是官方的資料比較少,以下總結(jié)了兩種 datagrid 的服務(wù)器端分頁(yè)機(jī)制,可根據(jù)情況具體使用。
一、使用 datagrid 默認(rèn)機(jī)制
后臺(tái):
public JsonResult GetQuestionUnit() { // easyui datagrid 自身會(huì)通過(guò) post 的形式傳遞 rows and page int pageSize = Convert.ToInt32(Request["rows"]); int pageNum = Convert.ToInt32(Request["page"]); var dal = new QsQuestionUnitDal(); var questionUnits = dal.GetList("",pageNum -1, pageSize); // 返回到前臺(tái)的值必須按照如下的格式包括 total and rows var easyUIPages = new Dictionary<string, object>(); easyUIPages.Add("total", questionUnits.FirstOrDefault() == null ? 0 : questionUnits.FirstOrDefault().ReqCount); easyUIPages.Add("rows", questionUnits); return Json(easyUIPages, JsonRequestBehavior.AllowGet); }
前臺(tái):
(function () {(function () {('#dgd').datagrid({ pageNumber: 1, //url: "@ViewBag.Domain/Paper/GetQuestionUnit?arg1=xxx", columns: [[ { field: 'Id', title: 'id', width: 100 }, { field: 'Name', title: 'name', width: 100 }, ]], pagination: true, rownumbers: true, pageList: [3, 6] }); var p = ('#dgd').datagrid('getPager');('#dgd').datagrid('getPager');(p).pagination({ beforePageText: '第',//頁(yè)數(shù)文本框前顯示的漢字 afterPageText: '頁(yè) 共 {pages} 頁(yè)', displayMsg: '共{total}條數(shù)據(jù)', }); });
你需要把 ('#dgd').datagrid 方法放置到
$(function () { });
如果企圖通過(guò)其它的 JS 方法來(lái)調(diào)用 ('#dgd').datagrid 方法,則不會(huì)得到正確的分頁(yè)結(jié)果。
可以看到,上面 JS 代碼中 url 這一行是被注釋掉了。如果我們不需要做別的操作,頁(yè)面一加載就打算查詢出數(shù)據(jù),則可以不注釋掉該代碼。但是,往往,有的時(shí)候,url 的參數(shù),如 arg1 的值需要在界面上進(jìn)行某些操作,然后再通過(guò) JS 代碼去得到的,這個(gè)時(shí)候,就應(yīng)該注釋掉 url,而改由在別的地方賦值,如:
var step1Ok = function () { $('#dgd').datagrid({ url: "@ViewBag.Domain/Paper/GetQuestionUnit?arg1=xxx", }); };
在上面的代碼中,我們可以假設(shè)是點(diǎn)了界面的某個(gè)按鈕,調(diào)用了 step1Ok 這個(gè)方法后,才會(huì)去 url 查詢數(shù)據(jù),并呈現(xiàn)到 UI 中去。
二、利用 Ajax 獲取數(shù)據(jù)并填充 Datagrid
如果想追求更大的靈活性,我們可以不使用 datagrid 的默認(rèn)機(jī)制,即指定 url 的方式去獲取數(shù)據(jù),而是通過(guò) ajax 來(lái)獲取數(shù)據(jù)并填充 datagrid。使用這種方式,仍舊需要把 ('#dgd').datagrid 方法放置到
$(function () { });
后臺(tái)代碼不變,只不過(guò),點(diǎn)擊某個(gè)按鈕,調(diào)用 step1Ok 這個(gè)方法,變成了:
var step1Ok = function () { .messager.progress(title:′Pleasewaiting′,msg:′Loadingdata...′,text:′PROCESSING.......′);varp=.messager.progress(title:′Pleasewaiting′,msg:′Loadingdata...′,text:′PROCESSING.......′);varp=('#dgd').datagrid('getPager'); $(p).pagination({ onSelectPage: function (pageNumber, pageSize) { alert('onSelectPage pageNumber:' + pageNumber + ',pageSize:' + pageSize); getData(pageNumber, pageSize); } }); getData(1,3); };
第一次調(diào)用的時(shí)候,將會(huì)獲取第一頁(yè)的3條數(shù)據(jù):
getData(1,3);
然后我們可以看到,同時(shí),我們還為 pagination 的 onSelectPage 事件創(chuàng)建了一個(gè)時(shí)間處理器,這樣,當(dāng)改天頁(yè)面的時(shí)候,我們就會(huì)去:
getData(pageNumber, pageSize);
另外,由于繞開(kāi)了 datagrid 的原有機(jī)制進(jìn)行分頁(yè),我們采用了自己的遮蓋 $.messager.progress,然后在 ajax 的 success 中取消遮蓋就可以了。
getData 方法如下:
var getData = function (page, rows) { .ajax({ type: "POST", url: "@ViewBag.Domain/Paper/GetQuestionUnit", data: "page=" + page + "&rows=" + rows, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus);.ajax({ type: "POST", url: "@ViewBag.Domain/Paper/GetQuestionUnit", data: "page=" + page + "&rows=" + rows, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus);.messager.progress('close'); }, success: function (data) { //.each(data,function(i,item)//alert(item);//);.each(data,function(i,item)//alert(item);//);.messager.progress('close'); $('#dgd').datagrid('loadData', data); } }); };
原文地址:http://www.cnblogs.com/luminji
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
jQuery網(wǎng)頁(yè)選項(xiàng)卡插件rTabs用法實(shí)例分析
這篇文章主要介紹了jQuery網(wǎng)頁(yè)選項(xiàng)卡插件rTabs用法,較為詳細(xì)的分析了jquery選項(xiàng)卡插件rTabs的定義、實(shí)現(xiàn)及使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08jquery綁定原理 簡(jiǎn)單解析與實(shí)現(xiàn)代碼分享
下面的內(nèi)容只是自己的一些理解,水平有限,難免有錯(cuò),望指正2011-09-09jquery的冒泡事件的阻止與允許(三種實(shí)現(xiàn)方法)
冒泡或默認(rèn)的事件發(fā)生,在某些時(shí)候是不需要的,在此就需要一些可以阻止冒泡和默認(rèn)的事件的方法,本文介紹三種方法做到不同程度的阻止,感興趣的朋友可以了解下,或許對(duì)你了解冒泡事件有所幫助2013-02-02Jquery根據(jù)瀏覽器窗口改變調(diào)整大小的方法
下面小編就為大家?guī)?lái)一篇Jquery根據(jù)瀏覽器窗口改變調(diào)整大小的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02picLazyLoad 實(shí)現(xiàn)圖片延時(shí)加載(包含背景圖片)
下面小編就為大家?guī)?lái)一篇picLazyLoad 實(shí)現(xiàn)圖片延時(shí)加載(包含背景圖片)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07JQuery拖拽元素改變大小尺寸實(shí)現(xiàn)代碼
"元素拖拽改變大小"其實(shí)和"元素拖拽"一個(gè)原理,以下附出源碼原型,弄明白了原理再擴(kuò)展其他實(shí)際應(yīng)用,思路就變得簡(jiǎn)單、清晰得多了2012-12-12