2014-07-02 48 views
0

我正在尝试获取分页记录的所有行(记录存在于所有页面中)。但是,我只收到第一页中的记录。我如何获得表格中的所有记录?有没有一种方法来实现这只使用JavaScript? 我使用jQuery过滤器为了获得jqgrid中的过滤记录,所以我需要获得跨多个页面传播的过滤数据。如何获取jqgrid表中的所有分页记录?

var x=$("#list").getGridParam("reccount");//get only current page records count. 

var gridData = $("#list").jqGrid('getRowData');// get only current page records 

$("#list").jqGrid('getGridParam','data');//obtain all records but not filtered records in all  pages 

这里是我的代码:

$(document).ready(function() { 
var grid = $("#list"), 
mydata = [ 
    {id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
    {id:"2",invdate:"2007-10- 02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
    {id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
    {id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
    {id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
    {id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
    {id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
    {id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
    {id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
    {id:"10",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
    {id:"11",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
    {id:"12",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
    {id:"13",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
    {id:"14",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
    {id:"15",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
    {id:"16",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
    {id:"17",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
    {id:"18",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"} 
]; 
grid.jqGrid({ 
    datatype: "local", 
    data: mydata, 
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], 
    colModel:[ 
     {name:'id',index:'id', key: true, width:70, sorttype:"int"}, 
     {name:'invdate',index:'invdate', width:90, sorttype:"date"}, 
     {name:'name',index:'name', width:100}, 
     {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"}, 
     {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"}, 
     {name:'total',index:'total', width:80,align:"right",sorttype:"float"}, 
     {name:'note',index:'note', width:150, sortable:false} 
    ], 
    search:true, 
    pager:'#pager', 
    jsonReader: {cell:""}, 
    rowNum: 8, 
    rowList: [5, 10, 20, 50], 
    sortname: 'id', 
    sortorder: 'asc', 
    viewrecords: true, 
    height: "100%", 
    caption: "Multiple search with local data" 
}); 
grid.jqGrid('navGrid','#pager',{add:false,edit:false,del:false,search:true,refresh:true}, 
{},{},{},{multipleSearch:true, multipleGroup:true, showQuery: true}); 

}); 
+0

你如何运用上的jqGrid .. –

+0

过滤嗨yagnesh ..请看看下面链接,应用滤镜请张贴代码。 http://jsbin.com/xeyeroha/5/edit ......在这个例子中,从select picker中选择'test'选项,然后点击apply filter ..这会导致给出2页的记录。 ....请建议如何获取这两个页面中的所有行...谢谢..., – user3688497

+0

请参阅下面的答案。可能会帮助你。当初始化jqgrid时, –

回答

0

您可以使用loadComplete(){}回调的jqGrid的:

loadComplete: function(gridData){ 
    console.log(gridData); // will print all the records available in the grid. 
} 
+0

谢谢Jai。你指出我正确的方向。我回答了上面的这个问题。 – Anand

0

按我的理解,你需要网格的所有行的数据,而无需分页

没有任何可用于直接获取过滤器数据的函数。内部JqGrid使用$.jgrid.from来过滤本地数据。
为了获得后使用用于以下功能的jqGrid过滤的所有行数据:

var oldFrom = $.jgrid.from,lastSelected; 

$.jgrid.from = function (source, initalQuery) 
{ 
    var result = oldFrom.call(this, source, initalQuery), 
    old_select = result.select; 
    result.select = function (f) { 
     lastSelected = old_select.call(this, f); 
     return lastSelected; 
    }; 
    return result; 
}; 

lastSelected将返回数据应用滤波器后的网格元件,其最后的排序或过滤操作的结果的所有行的阵列。
$.jgrid.from是全局数据未连接到网格。如果你在页面上有更多的网格,它会很不舒服。人们可以修复下列行的小缺点,在每个网格的loadComplate代码:

loadComplete: function() { 
    this.p.lastSelected = lastSelected; 
} 

通过上面的代码中我们添加新的jqGrid参数lastSelected这将对作为数据参数相似,但只能容纳最后过滤后的数据。

您可以通过下面的代码得到过滤数据:

var filteredData = $grid.jqGrid('getGridParam', 'lastSelected'); 

JqGrid Demo (Get all data after filter)

+0

嗨Yagnesh ..谢谢你的答案..非常感谢..但你能建议如何包括你的代码在“loadcomplete”,因为我已经在我的代码中使用“loadcomplete”一次... – user3688497

+0

合并我的代码到你的代码..将'loadcomplete'中的行添加到你的函数中。 –

+0

谢谢yagnesh ..我得到所有过滤的记录,但唯一的问题是在applyfilters()上单击第二次时,它返回数据对象...但在第一次单击它时返回'null'...此外,与标签“loading ...”将出现。你能建议如何解决这个问题吗? – user3688497

相关问题