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. PCI-Express协议传输层读书笔记

    http://www.doczj.com/doc/35cb19633169a4517723a3d9-9.html

  2. linux下实现CPU使用率和内存使用率获取方法

    想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了. 方法就是读取proc下的文件来获取了. cpu使用率:    /proc/stat ,内存使用情况:     /p ...

  3. iOS开发之使用AFN上传图片

    //1.创建管理者对象 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializ ...

  4. 设置root密码,su与sudo的区别

    sudo passwd root 可以修改root密码,但首先会要求你输入当前用户的密码 sudo的意思是switch user do,默认切换到root,要求当前用户的密码,会自动调用exit返回到 ...

  5. oracle 显示格式化

    sqlplus中:set wrap off; set pagesize 1000; set linesize 1000; col id format A20; //该字段最长显示20个字符 col n ...

  6. hive 和Hbase的pom文件

    <hadoop-common></hadoop-common> <hadoop-hdfs></hadoop-hdfs> <dependency&g ...

  7. oozie中时间EL表达式

    EL表达式: 常量表示形式 含义说明 ${coord:minutes(int n)} 返回日期时间:从一开始,周期执行n分钟 ${coord:hours(int n)} 返回日期时间:从一开始,周期执 ...

  8. EasyUI 创建对话框

    对话框是特殊的窗口,它能包括上面的工具栏和下面的按钮.默认对话框不能改变大小,但是用户可以设置resizeable属性为true来使它可以被改变大小:对话框非常简单,可以使用DIV标记创建: < ...

  9. Hive三种不同的数据导出的方式

    转自:http://blog.chinaunix.net/uid-27177626-id-4653808.html Hive三种不同的数据导出的方式,根据导出的地方不一样,将这些方法分为三类:(1)导 ...

  10. 控制反转(Inversion of Control,英文缩写为IoC),另外一个名字叫做依赖注入(Dependency Injection,简称DI)

    控制反转(Inversion of Control,英文缩写为IoC),另外一个名字叫做依赖注入(Dependency Injection,简称DI),是一个重要的面向对象编程的法则来削减计算机程序的 ...