2011-10-30 43 views
6

我有一個slickgrid,其中一些行被過濾器(DataView)隱藏。獲取slickgrid中選定行的數據

當我現在調用網格的getSelectedRows方法時,我得到了可見的選定行的索引。但我需要所選行的實際數據。

回答

19

你必須做這樣的事情:

var selectedData = [], 
    selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_grid.getData()[value]); 
}); 

眼下selectedData變量包含選定的行數據。

+1

唉唉,grid.getData,這是我一直在尋找的方法。但grid.getData [值]沒有工作我不得不使用grid.getData()。getItem(值)。 – Preli

+0

我的歉意,我使用安德魯兒童的叉子(https://github.com/andrewchilds/SlickGrid),這個代碼很好的工作。 – matma

+0

我認爲'grid.getData()[value]'和'grid.getData()。getItem(value)'之間的區別與用於網格存儲的類型有關:前者適用於數組,後者適用於數組.DataView。我的意思是,我在猜測;我可能是完全錯誤的,但嘗試一下。 –

1

您也可以使用這條線的。每個循環從數據視圖,而不是從網格對象使用的getData()提取數據,因爲這似乎取決於叉是不一致的:

var selectedData = [], 
    selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_dataView.getItemById(value)); 
}); 
+2

其實,我相信你會想要使用getItemByIdx,而不是getItemById。 getItemByIdx將通過索引獲取數據,而getItemById通過您在創建數據時提供的唯一ID獲取數據。如果您爲每個項目指定的ID等於其在網格中的索引,它們將執行相同的操作。但是,就我而言,他們不匹配。儘管感謝代碼。 – dallin

+0

沒問題,男人!希望可以幫助你。 – Axle

3

你有一個錯誤。它需要是「getDataItem」而不是「getData」。

var selectedData = [],enter code here`selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_grid.getDataItem(value)); 
}); 
+0

解決方案@matma提供的工作正常,如果你不使用DataView。這不是一個真正的錯誤。你的解決方案可能會更好,但它會一直工作。 – idbehold

0

如果您從其他控件像訪問網格。點擊按鈕

var selectRow = gridInstance.getSelectedRows(); 
alert(gridInstance.getDataItem(selectRow).columnName) 
1
hObjMarcado = (grid.getSelectedRows()); 
for(var a_id in hObjMarcado) { 
    vres.push(dataview.getItem(hObjMarcado[a_id])); 
    //la opcion getItem obtiene el elemento especifico, 
    //aun con filtro. 
} 
return vres; 
+2

請嘗試用英文書寫 – Leeor

相關問題