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 相关文章推荐
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
Jan 17 Javascript
给jQuery方法添加回调函数一款插件的应用
Jan 21 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
javascript判断复选框是否选中的方法
Oct 16 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
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
使用 php4 加速 web 传输
2006/10/09 PHP
用缓存实现静态页面的测试
2006/12/06 PHP
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP 加密解密内部算法
2010/04/22 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php中explode与split的区别介绍
2012/10/03 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
vue-dialog的弹出层组件
2020/05/25 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
详解python中__name__的意义以及作用
2019/08/07 Python
Python绘制热力图示例
2019/09/27 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
.net工程师笔试题
2012/06/09 面试题
党日活动总结
2014/05/07 职场文书
综合测评个人总结
2015/03/03 职场文书