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 相关文章推荐
原生Ajax 和jQuery Ajax的区别示例分析
Dec 17 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
Jan 21 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
深入理解vue-loader如何使用
Jun 06 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
Mar 02 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
vue实现点击按钮切换背景颜色的示例代码
Jun 23 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
PHP进程通信基础之信号
2017/02/19 PHP
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
webpack打包非模块化js的方法
2018/10/24 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
windows下python和pip安装教程
2018/05/25 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
中国高端家电购物商城:顺电
2018/03/04 全球购物
公务员培训自我鉴定
2013/09/19 职场文书
艺术爱好者的自我评价分享
2013/10/08 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
欢迎家长标语
2014/10/08 职场文书
建国大业观后感800字
2015/06/01 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL
go web 预防跨站脚本的实现方式
2021/06/11 Golang