jQuery EasyUI Pagination实现分页的常用方法


Posted in Javascript onMay 21, 2016

EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 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);

  } 
 }); 
};

原文地址:http://www.cnblogs.com/luminji

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
function foo的原型与prototype属性解惑
Nov 19 Javascript
jQuery动画animate方法使用介绍
May 06 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
你未必知道的JavaScript和CSS交互的5种方法
Apr 02 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 Javascript
整理Javascript事件响应学习笔记
Dec 02 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
如何提高数据访问速度
Dec 26 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 #Javascript
在JavaScript中模拟类(class)及类的继承关系
May 20 #Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
May 20 #Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 #Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 #Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 #Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 #Javascript
You might like
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
基于python实现简单日历
2018/07/28 Python
详解python多线程之间的同步(一)
2019/04/03 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
经典促销广告词大全
2014/03/19 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
小学教学工作总结2015
2015/05/13 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android