jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部分内容,而本地所有数据行。

  如果是通过data或者datastr配置的本地数据,获取所有数据很简单,调用$('#gridid').jqGrid('getGridParam','data')/$('#gridid').jqGrid('getGridParam','datastr')就能获取到原始数据了(datastr还得需要自己处理一下)。

  但是对于启用了查询功能,调用getGridParam方法或者getRowData方法就不灵光了,getGridParam获取的所有数据,而非查询后匹配的结果集合。而getRowData则获取到的是rowNum指定大小的数据集,如果查询结果小于rowNum就没问题,如果是查询结果数据量大于rowNum配置,就无法获取所有查询匹配的数据行了。

  如果要想获取到jqGrid本次查询所有匹配的所有数据,可以有2种方法获取
1)设置rowNum为所有查询后得到的总records数量,然后 在调用getRowData,再还原rowNum为原来的记录数量,这个会操作2次jqGrid加载数 据,性能有损耗,但是相比较修改源代码安全,要是源代码修改错了,你就得重新下载过jqGrid了。

     function getResult() {//获取结果结合的函数,可以通过此函数获取查询后匹配的所有数据行。
         var o = jQuery("#jqgrid");
         var rows = o.jqGrid('getRowData'); //获取当前显示的记录
         console.log(rows)
 
         var rowNum = o.jqGrid('getGridParam', 'rowNum'); //获取显示配置记录数量
         var total = o.jqGrid('getGridParam', 'records'); //获取查询得到的总记录数量
         o.jqGrid('setGridParam', { rowNum: total }).trigger('reloadGrid'); //设置rowNum为总记录数量并且刷新jqGrid,使所有记录现出来调用getRowData方法才能获取到所有数据
         var rows = o.jqGrid('getRowData');  //输出所有匹配的
 
         o.jqGrid('setGridParam', { rowNum: rowNum }).trigger('reloadGrid'); //还原原来显示的记录数量
         return rows;
     }

2)修改源代码,jqGrid的过滤结果是内部变量,没有对外提供,修改jqGrid提供查询结果的代码语句,增加一个全局遍历记录jqGrid查询后的结果。

  jqGrid的查询源代码如下

var queryResults = query.select(),//此时获取到的就是所有记录
            recordsperpage = parseInt(ts.p.rowNum,10),
            total = queryResults.length,
            page = parseInt(ts.p.page,10),
            totalpages = Math.ceil(total / recordsperpage),
            retresult = {};
            queryResults = queryResults.slice( (page-1)*recordsperpage , page*recordsperpage );//这里对记录进行了裁剪,获取当前页数据

  jqGrid-4.4.0压缩版本的源代码如下,如果是其他jqGrid压缩版本代码,可能压缩后的变量名称会不一样,自己慢慢找到类似的代码进行修改

var n=s.select(),u=parseInt(a.p.rowNum,10),t=n.length,v=parseInt(a.p.page,10),x=Math.ceil(t/u),r={},n=n.slice((v-1)*u,v*u),f=s=null;

  修改后的压缩版本代码,增加一个函数全局变量来保存全部查询命中结果

var n=s.select(),u=parseInt(a.p.rowNum,10),t=n.length,v=parseInt(a.p.page,10),x=Math.ceil(t/u),r={};window.hitRcds=n;n=n.slice((v-1)*u,v*u);var f=s=null;

  此时window作用域下的全局变量hitRcds就是全部匹配的记录

JqGrid 获取所有数据的更多相关文章

  1. jqgrid 获取当前页数据

    /** *刷新,jqGrid刷新当前列表页代码 */ function refresh(url) { var page = $('#your_grid').getGridParam('page'); ...

  2. jqgrid 获取远端数据失败时,弹出错误提示

    有时,我们给jqgrid绑定的远端数据获取失败,此时,需要把错误信息反馈给用户展示,如何实现? 可通过jqgrid的 loadError 来处理错误数据的返回.详细如下: $("#jqGri ...

  3. jqgrid 获取选中用户的数据插入

    因为查询出的表和被插入的表不是在同一个数据库,所以先从前台jqgrid表格中获取到数据后,再插入表中. 实现: 获取到jqgrid选中 的每行数据之后,发ajax请求把数据以json格式传入后台,后台 ...

  4. Jqgrid获取行id

    //获取选中行(单行)的ID var id = $("#table").jqGrid('getGridParam','selrow'); //根据id获取行数据,返回的是列表 va ...

  5. C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据

    我曾经在系列文章中的<C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍>中介绍了微信菜单里面的重定向操作,通过这个重定向操作,我们可以获取一个code值,然后获取用户的open ...

  6. jdbc java数据库连接 7)获取插入数据的自增长值

    我们创建一个sql表,里面的数据往往都会有自增长值. 那么,我们用jdbc插入数据的时候,要想同时获得这个增长值. 代码: /** * * 这是插入一条数据的同时,获取该数据的则增长列的值(该例子的自 ...

  7. 室内定位系列(二)——仿真获取RSS数据

    很多情况下大家都采用实际测量的数据进行定位算法的性能分析和验证,但是实际测量的工作量太大.数据不全面.灵活性较小,采用仿真的方法获取RSS数据是另一种可供选择的方式.本文介绍射线跟踪技术的基本原理,以 ...

  8. asp.net三层架构 及其中使用泛型获取实体数据介绍

    asp.net中使用泛型获取实体数据可以发挥更高的效率,代码简洁方便,本例采用三层架构.首先在model层中定义StuInfo实体,然后在 DAL层的SQLHelper数据操作类中定义list< ...

  9. android 从服务器获取新闻数据并显示在客户端

    新闻客户端案例 第一次进入新闻客户端需要请求服务器获取新闻数据,做listview的展示, 为了第二次再次打开新闻客户端时能快速显示新闻,需要将数据缓存到数据库中,下次打开可以直接去数据库中获取新闻直 ...

随机推荐

  1. 【死磕Java并发】-----J.U.C之AQS:CLH同步队列

    此篇博客全部源代码均来自JDK 1.8 在上篇博客[死磕Java并发]-–J.U.C之AQS:AQS简单介绍中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列. CLH同步队列是一个F ...

  2. 在CentOS上安装部署MooseFS分布式文件系统

    参考资料: http://www.moosefs.org/tl_files/manpageszip/moosefs-step-by-step-tutorial-cn-v.1.1.pdf 环境介绍:OS ...

  3. 【原创】k8s源代码分析-----kubelet(1)主要流程

    本人空间链接http://user.qzone.qq.com/29185807/blog/1460015727 源代码为k8s v1.1.1稳定版本号 kubelet代码比較复杂.主要是由于其担负的任 ...

  4. Android Studio 更新gradle插件

    今天更新了CentOS, 更新了java版本. 然后gradle跪了..... 不吐槽java版本的兼容性问题了.... 反正有他自己的理由.... 那么就更新gradle咯.... 下面是方法... ...

  5. HDU 3336 Count the string 查找匹配字符串

    Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. kafka启动及查看topic命令【已用过的,待更新】

    以下均为开发测试环境下: 启动Zookeeperbin/zookeeper-server-start.sh config/zookeeper.properties &启动kafkabin/ka ...

  7. django model 多对多保存

  8. alsamixer 在音频子系统的使用

    alsamixer是Linux 音频架构ALSA工具的其中一个,用于配置音频的各个参数. alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个s ...

  9. 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人

    最近由于要参加微软亚洲研究院的夏令营,需要利用微软的服务搭建一个对话Bot,以便对俱乐部的情况进行介绍,所以现学了几天,搭建了一个简单的对话Bot,期间参考了大量的资料,尤其是下面的这篇博客: htt ...

  10. 几种在Linux下查询外网IP的办法。

    几种在Linux下查询外网IP的办法.   Curl 纯文本格式输出: curl icanhazip.com curl ifconfig.me curl curlmyip.com curl ip.ap ...