2014-09-13 35 views
4

的jqGrid的數據在jqGrid的如何返回選定行

var gridData=$("#SearchResults").jqGrid('getRowData') 

上面一行給你的所有行的網格數據,有沒有辦法在那裏我能得到的只有所選行的網格數據。

selRowId = myGrid.jqGrid ('getGridParam', 'selrow'),

以上給出了選擇的行標識,但我希望所有的選定行的數據以及它的GridData的回報,但我只需要的那些選擇一個

回答

10

這很簡單。 getRowData方法的第二個可選選項參數是要求數據的行的rowid(請參見the documentation)。所以,你可以使用

var selRowId = myGrid.jqGrid("getGridParam", "selrow"); 

獲得最後選定的rowid,然後再由

var rowData = myGrid.jqGrid("getRowData", selRowId); 

獲得該行的數據。如果您使用datatype: "local"或一些偏遠datatype"xml""json"),但與loadonce: true那麼jqGrid將數據內部保存在data數組中。在這種情況下getLocalRow方法的用法是作爲getRowData使用更有效:

var rowData = myGrid.jqGrid("getLocalRow", selRowId); 

如果使用multiselect: true選項,然後jqGrid的支持selarrrow陣列選定的rowid的,你可以在迴路中獲得所需的所有數據:

var i, selRowIds = myGrid.jqGrid("getGridParam", "selarrrow"), n, rowData; 
for (i = 0, n = selRowIds.length; i < n; i++) { 
    rowData = myGrid.jqGrid("getLocalRow", selRowIds[i]); 
    // one can uses the data here 
} 
+0

這並不在4.5.4版本及以下的工作,這不會返回正確的行數據,如果網格不同於分類原始數據。也'id'是選定的行,id在'onSelectRow:function(id,status,e){...}' – AaA 2017-11-14 07:35:06

+0

@AaA:我相信你錯了。我想你誤解了什麼是rowid。許多新手將行索引與rowid混合,並以錯誤的方式填充網格(不在輸入數據中指定id)。我建議你用演示你的問題的演示發佈新的問題。此外,我建議你將復古版本4.5.4(這是4歲以上)升級到[免費jqGrid](https://github.com/free-jqgrid/jqGrid)4.15.2。 – Oleg 2017-11-14 07:47:47

+0

謝謝奧列格,我知道這一點。我想我誤解了它。我在您的解決方案中引用了'selRowId',它等於'onSelectRow'事件中的'id'。在版本4.5.4中它返回不正確的行,但它在4.15.2中正常工作。 – AaA 2017-11-14 08:42:26

0

如果你正試圖從電網事件,例如onSelectRow你可以忽略奧列格的答案的第一部分裏抓住你的數據,並得到類似以下數據:

myGrid.jqGrid({ 
    ... // Grid create options -> 
    datatype: 'local', 
    data: gridData, 
    // <-- 
    onSelectRow: function(id){ 
     data = $(this).jqGrid("getLocalRow", id); 

     // if you need actual content of the cells 
     // data = myGrid.jqGrid("getRowData", id); 
    } 
}); 

顯然這隻適用於單行,但如果意圖是,我相信奧列格的答案是唯一的選擇。

注:但它是在4.5.4版修復oleg's free jqgrid 4.15.2

相關問題