2011-06-20 96 views
5

如何獲取網格中每一行的ID(甚至跨頁)?獲取jqGrid中的所有行ID

getDataIDsgetRowData只給出當前頁面的ID。

謝謝!

+1

你不能,因爲其他頁面可能尚未加載。 –

+1

我不喜歡那個答案:( –

+0

好吧,你不能問網格數據,它沒有,你可以嗎?你需要問唯一的事情* * *有這樣的數據:你的服務器。 –

回答

13

只有當您有本地電網(datatype:'local'或有loadonce:true)時纔有可能。在所有頁面的所有包含數據的ID都已經在本地的情況下。在這種情況下,您可以使用_index參數,該參數通常與另一個更爲已知的參數data一起使用。用

var idToDataIndex = $("#list").jqGrid('getGridParam','_index'); 

你會得到_index參數。它是一個具有所有網格屬性的對象。所以,你可以用

var id; 
for (id in idToDataIndex) { 
    if (idToDataIndex.hasOwnProperty(id)) { 
     // id is the rowid. 
     // to get the data you can use 
     // mydata[idToDataIndex[id]] where 
     // var mydata = $("#list").jqGrid('getGridParam','data'); 
    } 
} 
+0

您好Oleg,我的jqgrid有數據類型:json和我通過json閱讀器讀取數據。我已經給了loadonce = true,即使那麼我也面臨這個問題,其中getRowData只返回當前頁面的ID。我怎麼能解決這個問題?謝謝你的幫助。 – user1447718

+0

@ user1447718:是的,你可以使用'$(「#list 「).jqGrid('getGridParam','data');'獲取數據關於*所有頁面*。如果沒有包含'id'信息的列,那麼你可以使用'$(「#list」)。jqGrid('getGridParam','_index')'獲得'data'數組中的所有id和索引,數據對應於id。 – Oleg

+1

謝謝奧列格。雖然在我的jqgrid中看到奇怪的東西。我給了以下數據類型:'json',loadonce:'true',cellsubmit:'clientArray'。數據將分兩頁加載。但是當我做inspectelement時,我看到TRs只爲第一頁創建。我沒有看到第二頁的TR。在第一頁中,getRows是不是返回第二頁的數據? – user1447718

0

列舉的ID在以後的版本中的jqGrid,他們推出了適合這一情況更好,因爲它會考慮任何工具欄過濾可能代替功能。 See Oleg's example here.因此,如果您有jqGrid(loadonce:true和/或datatype:local),則以下操作將返回與當前過濾匹配的所有行ID(顯示在當前頁面中)。

var allIdsWithFiltering = grid.jqGrid('getGridParam', 'lastSelectedData'); 

這將返回一個普通數組,不像原來的答案,這與必須被枚舉的屬性返回一個對象。