EasyUI Pagination 分页的两种做法小结


Posted in Javascript onJuly 09, 2016

EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 datagrid 的服务器端分页机制,一种是datagrid默认机制,另一种是利用 Ajax 获取数据并填充 Datagrid,可根据情况具体使用。

一:使用 datagrid 默认机制

后台:

public JsonResult GetQuestionUnit() 
{ 
// easyui datagrid 自身会通过 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); 
// 返回到前台的值必须按照如下的格式包括 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); 
}

前台:
(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: '第',//页数文本框前显示的汉字 
afterPageText: '页 共 {pages} 页', 
displayMsg: '共{total}条数据',
}); 
});

你需要把 ('#dgd').datagrid 方法放置到

$(function () {
});

如果企图通过其它的 JS 方法来调用 ('#dgd').datagrid 方法,则不会得到正确的分页结果。

可以看到,上面 JS 代码中 url 这一行是被注释掉了。如果我们不需要做别的操作,页面一加载就打算查询出数据,则可以不注释掉该代码。但是,往往,有的时候,url 的参数,如 arg1 的值需要在界面上进行某些操作,然后再通过 JS 代码去得到的,这个时候,就应该注释掉 url,而改由在别的地方赋值,如:

var step1Ok = function () {
$('#dgd').datagrid({ 
url: "@ViewBag.Domain/Paper/GetQuestionUnit?arg1=xxx", 
});
};

在上面的代码中,我们可以假设是点了界面的某个按钮,调用了 step1Ok 这个方法后,才会去 url 查询数据,并呈现到 UI 中去。

二:利用 Ajax 获取数据并填充 Datagrid

如果想追求更大的灵活性,我们可以不使用 datagrid 的默认机制,即指定 url 的方式去获取数据,而是通过 ajax 来获取数据并填充 datagrid。使用这种方式,仍旧需要把 ('#dgd').datagrid 方法放置到

$(function () {
});

后台代码不变,只不过,点击某个按钮,调用 step1Ok 这个方法,变成了:

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

第一次调用的时候,将会获取第一页的3条数据:

getData(1,3);

然后我们可以看到,同时,我们还为 pagination 的 onSelectPage 事件创建了一个时间处理器,这样,当改天页面的时候,我们就会去:

getData(pageNumber, pageSize);

另外,由于绕开了 datagrid 的原有机制进行分页,我们采用了自己的遮盖 $.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);
} 
}); 
};

以上所述是小编给大家介绍的EasyUI Pagination 分页的两种做法小结的全部叙述,希望对大家有所帮助,如果大家想了解更多内容敬请关注三水点靠木网站!

Javascript 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
Prototype使用指南之dom.js
Jan 10 Javascript
分享27款非常棒的jQuery 表单插件
Mar 28 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
javascript里绝对用的上的字符分割函数总结
Jul 31 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 Javascript
jQuery实现二维码扫描功能
Jan 09 Javascript
详解打造 Vue.js 可复用组件
Mar 24 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
React中的render何时执行过程
Apr 13 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 #Javascript
JavaScript基础知识点归纳(推荐)
Jul 09 #Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 #Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 #Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
Jul 09 #Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 #Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 #Javascript
You might like
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
javascript 函数及作用域总结介绍
2013/11/12 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python 内置函数汇总详解
2019/09/16 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
关于爱情的广播稿
2014/01/16 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript