现在的位置: 首页 > easyui > Grid > datagrid > 正文
jQuery easyui datagrid 非URL后台分页
2012年01月16日 datagrid ⁄ 共 1029字 评论数 15 ⁄ 被围观 33,366 views+
文章目录
[隐藏]

现在主流的前端UI框架封装的datagrid基本都带有分页能力,而且做的很到位,大部分是根据URL的方式调用远程地址获取json格式的数据源,这很大程度上给开发者节省了时间。

不过问题是,并不是所有的异步请求的方式我们都使用URL,比如用spring和dwr框架来实现异步,或者是我们公司封装的callRemoteFunctionNoTrans异步方法,每次获取数据都是在前台javascript中调用,分页当然就不能靠URL了。

jQuery easyui datagrid 的相关文档都翻遍了,还真是没有不通过URL实现后台分页的现成API,不过既然 easyui datagrid 已经有了pageNumber和pageSize属性,我们对源码稍作修改便能实现这个API。

实现思路:

给easyui datagrid 添加一个方法,该方法类用于改变datagrid自身的分页参数,以及异步获取数据并加载获取到的数据。

代码修改:

一:定义默认的doPagination(pageNumber,pageSize)事件:

找到datagrid定义默认方法的地方,1.2.5版本在7610行附近(实在找不到的话,在压缩码里搜索"$.fn.datagrid.defaults")然后添加以下代码:

  1. ,doPagination:function(pageIndex,pageSize){}
二:修改pagination的onSelectPage事件:

onSelectPage事件在6162行附近(实在找不到的话,在压缩码里搜索"pagination"),修改为:

  1. onSelectPage:function(_406,_407){
  2. opts.pageNumber=_406;
  3. opts.pageSize=_407;
  4. opts.doPagination(_406,_407);
  5. _4b6(_3fc);
  6. }

2012-3-2更新(bug修正):

前面在对onSelectPage事件的处理上存在不足之处,如果是url方式调用的话,会存在脚本报错。报错原因是url方式调用的时候用户不会定义doPagination事件,从而出现未定变量的错误。

也就是说url方式的时候不应该调用doPagination了,所以应该修正代码为:

  1. opts.pageNumber=_406;
  2. opts.pageSize=_407;
  3. if(!opts.url){
  4. opts.doPagination(_406,_407);
  5. }
  6. _4b6(_3fc);

目前有 15 条留言 其中:访客:8 条, 博主:6 条 引用: 1

  1. @ssss : 2012年09月04日16:05:28  -49楼 @回复 回复
  2. @ssss : 2012年09月04日17:24:59  -48楼 @回复 回复

  3. 管理员
    世纪之光 : 2012年09月04日22:24:40  -47楼 @回复 回复
  4. beach : 2012年11月01日17:33:57  -46楼 @回复 回复
  5. sdstt89 : 2013年08月18日15:46:16  -45楼 @回复 回复
  6. MicEzreal : 2013年11月18日15:30:31  -44楼 @回复 回复
  7. MicEzreal : 2013年11月18日15:38:00  -43楼 @回复 回复
  8. MicEzreal : 2013年11月20日17:02:49  -42楼 @回复 回复
  9. 大王 : 2015年01月04日10:35:42  -41楼 @回复 回复

给我留言

留言无头像?


×