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 相关文章推荐
js操作label给label赋值及取label的值示例
Nov 07 Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
Jan 12 Javascript
webpack将js打包后的map文件详解
Feb 22 Javascript
Vue仿支付宝支付功能
May 25 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
Oct 19 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
Jun 18 Javascript
vscode vue 文件模板的配置方法
Jul 23 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 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学习之简单计算器实现代码
2011/06/09 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
javascript编写简易计算器
2017/05/06 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
Python读取xlsx文件的实现方法
2019/07/04 Python
Python定义函数实现累计求和操作
2020/05/03 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
scrapy头部修改的方法详解
2020/12/06 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
大专自我鉴定范文
2013/10/23 职场文书
销售经理工作职责
2014/02/03 职场文书
《都江堰》教学反思
2014/02/07 职场文书
简单的项目建议书模板
2014/03/12 职场文书
中学生寄语大全
2014/04/03 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
经理任命书模板
2014/06/06 职场文书
老干部工作先进事迹
2014/08/17 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
公司股东出资证明书
2014/11/01 职场文书
2014年学习部工作总结
2014/11/12 职场文书
爱的承诺书
2015/01/20 职场文书
画展邀请函
2015/01/31 职场文书
2016寒假假期总结
2015/10/10 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
浅谈Vue的computed计算属性
2022/03/21 Vue.js
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers