2017-06-29 23 views
0

我一直有與多選擇dgrid選擇混合的問題。Dgrid選擇混合在訂單中的問題

使用選擇屬性(例如)

var selected = Object.keys(datatable.selection) 

它作爲預期返回行ID的數組。然而這些ID的ORDER似乎是「任意的」。看來也許選擇的順序有一個影響。

在任何情況下,在數據表中,我希望返回選定的行以使它們顯示在列表中,而它們不會。

我可以使用dojo.query(".dgrid-selected", datatable.domNode)以正確的順序得到它們,並使用HTML元素獲取行數據,但這看起來像是一個破解。

我找不到在SitePen文檔上執行此操作的正確方法。任何人?

回答

1

我不認爲有直接的方式來做到這一點。 Object.keys(datatable.selection)按照選擇行的順序返回id數組。您可以使用d-grid和JS的一些內置功能來實現此目的。以下是步驟:

  1. 獲取編號Object.keys

    var selected = Object.keys(datatable.selection)

  2. 創建包含ID的對象的列表和元素的rowIndex

代碼:

var dataList= []; 
for(var i=0; i< selected.length; i++){ 
    dataList.push({id: selected[i], index: datatable.row(selected[i]).element.rowIndex}); 
} 
  • 排序使用index列表作爲屬性:
  • dataList.sort(function(a, b){ return a.index- b.index; })

    由此產生的dataList將按照它們出現在網格中的順序列出對象列表。

    +1

    謝謝。工作很好。我的另一種方法,使用dom對象也起作用,但我真的認爲它更像是一種黑客攻擊。 –

    +0

    @DanPiccolo:很高興能幫到你。是的,使用DOM似乎更像是對我的破解。我也傾向於使用'd-grid'提供的內置方法。 – Himanshu