2014-07-02 109 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

相關問題