2010-07-22 57 views
9

希望這是一個快速的!jqGrid getData僅返回當前頁面的數據

我有一個使用'clientSide'(本地)數據的可編輯網格,我現在希望迭代javascript中的所有行,並在通過jQuery.ajax調用將其發送到服務器之前自行處理/打包數據。

問題是,意外地(至少對我來說),使用下面的代碼只會檢索當前可見網格頁的行!我如何獲得網格中的所有行(即,每頁有四頁共10條記錄,並且此代碼只在第一頁時返回前10)?它們必須存在於客戶端的某個地方,因爲我可以瀏覽並編輯行,並且數據在不調用服務器的情況下被持久化!從託尼:)

cacheCONF = []; 
    var rows= $('#myGrid').getRowData(); //<--Need to get ALL rows here!!! 
    var cacheRowID = 0; 
    for (var row in rows) { 
     if (rows[row].Action == 'Yes') { 
      cacheCONF.push({ RowID: rowID, System: rows[row].System, Action: rows[row].Action, Account: '-', Required: '-' }); 
      rowID++; 
     } 
    } 
+2

通過找到一種解決方法暫時更改頁面大小。希望有一個更「正式」的解決方案。代碼是: var pageSize = $('#myGrid')。getGridParam('rowNum'); ('#myGrid')。setGridParam({rowNum:10000})。trigger(「reloadGrid」); 然後,getRowData將最多獲得10000行(因此將其設置爲高於最大可能行數)。 然後,您可以使用pageSize將頁面大小設置回用戶的偏好。 – jqwha 2010-07-22 09:46:11

回答

8

解決方案:

var mydata = $("#grid").jqGrid('getGridParam','data'); 
+2

但是,當排序然後調用該函數時,這不會返回正確的數據排序順序,還有其他函數嗎? – 2012-07-13 13:14:21

+0

很好的答案。唯一的問題是如果您在加載表格時使用JQGrid中的格式化函數格式化數據,則這些新值將丟失。 – will824 2013-08-01 22:53:13

5

曾經遇到過類似的問題,下面是我最終使用

var data = $("#table-id").jqGrid('getGridParam', 'data'); 
for (var i = 0; i < data.length; i++) { 
    var f_name = data[i].FirstName; 
    var l_name = data[i].LastName; 
    // blah... blah.. 
} 

參考:http://www.trirand.com/blog/?page_id=393/help/jqgrid-getdata-only-returns-data-for-current-page/

+0

您的解決方案適用於我。 'getRowData()'由於某種原因沒有返回網格的最後一行。 – 2016-12-08 00:20:42