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 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
通过javascript设置css属性的代码
Dec 28 Javascript
jquery利用event.which方法获取键盘输入值的代码
Oct 09 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
谷歌地图打不开的解决办法
Aug 07 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
Nov 16 Javascript
angular.js分页代码的实例
Jul 27 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
JS设计模式之命令模式概念与用法分析
Feb 06 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
总结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常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
php常用数学函数汇总
2014/11/21 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
详解Document.Cookie
2015/12/25 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
jquery replace方法去空格
2017/05/08 jQuery
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
js实现双色球效果
2020/08/02 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python 快速排序代码
2009/11/23 Python
Python pass 语句使用示例
2014/03/11 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
关于期中考试的反思
2014/02/02 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
2015感人爱情寄语
2015/02/26 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python