请教:  在jqgrid中,使用本地数据,搜索后如何获取搜索的数据项?  或者如何判断griddata中哪些数据是搜索命中的数据?jqgrid搜索数据

解决方案 »

  1.   

      在jqgrid中,使用本地数据,搜索后如何获取搜索的数据项?
    --
    $('#jqGridId').jqGrid('getRowData')得到的就是jqgrid中当前显示的数据
    你要的不就是搜索后的数据?还是要提取所有数据,包括没显示的?需要重新reset下查询结果在调用getRowData
      

  2.   


    匹配的数据全部返回了吗?而不是只返回了jqgrid配置的rowNum数据量。这样获取不到所有数据的,jqgrid只保存返回的数据,分页的数据没保存如果是返回了所有匹配的数据,只是rowNum配置小于返回的数据量导致没有显示其他的记录,可以这样获取,添加loadComplete事件,参数为jqgrid包装过的json对象,其中list属性为所有的记录集合             loadComplete: function (data) {
                   console.log(data.list)
                 }
      

  3.   

    额,版主还是没看清楚我说的,是本地数据,搜索也是本地的,与服务器不交互,所有数据都在griddata里面我现在需要的是在搜索后,获取所有搜索命中的数据,不是全部数据,不是页面显示数据
      

  4.   

    你不是用的jqgrid自带的查询?jqgrid自带的查询查询后jqgrid显示的就是命中的数据,$('#jqGridId').jqGrid('getRowData') 得到就是显示的数据(命中数据)不太明白楼主的思路。。发个代码看看喽~
      

  5.   

    是自带查询,命中的数据分页后,$('#jqGridId').jqGrid('getRowData') 就不是全部命中数据了,只是本页的数据,我想要的事全部命中数据,比如查询后有20条数据,分页显示10条,第二页的数据就无法得到
      

  6.   

    可以设置rowNum为所有records,然后在调用getRowData,再还原rowNum为原来的就行     function getResult() {//获取结果结合的函数,可以通过此函数获取查询后匹配的所有数据行。
             var o = jQuery("#jqgrid");
             var rows = o.jqGrid('getRowData'); //获取所有记录
             console.log(rows)
             alert(rows.length); //输出原始rowNum的数据量         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;
         }
      

  7.   

    那浏览器不是要重建两次Table内容,如果数据量比较大,会很慢的
      

  8.   


    那你就的自己存储下原始数据,通过获取查询表单的条件自己过滤出自己需要的数据,不操作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 );//这里对记录进行了裁剪,获取当前页数据
      

  9.   

    改jqgrid代码搞定,谢谢版主了
      

  10.   

    clintonfx可不可以告诉我你是怎么实现的,最好有代码?
      

  11.   


    版主在上面已经写了,你找到queryResults这一段分页代码,然后将筛选的数据弄出来就行了