Dgrid选择混合问题与订单

时间:2017-06-29 15:53:47

标签: dojo dgrid

我一直遇到dgrid选择混合与多选的问题。

使用选择属性(例如)

var selected = Object.keys(datatable.selection)

它按预期返回行ID的数组。然而,这些ID的ORDER似乎是“任意的”。似乎选择顺序可能会产生影响。

无论如何,在数据表中,我希望返回选定的行,以便它们显示在列表中,而不是。

我可以使用dojo.query(".dgrid-selected", datatable.domNode)以正确的顺序获取它们,并使用HTML元素获取行数据,但这似乎是一个黑客。

我无法找到在SitePen文档上执行此操作的正确方法。任何人吗?

1 个答案:

答案 0 :(得分:1)

我认为没有直接的方法可以做到这一点。 Object.keys(datatable.selection)按照选择行的顺序返回id数组。您可以使用d-grid和JS的一些内置函数来实现此目的。以下是步骤:

  1. 通过Object.keys获取ID。

    var selected = Object.keys(datatable.selection)

  2. 创建一个包含id和rowIndex元素
  3. 的对象列表

    代码:

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

      生成的dataList将按顺序列出对象列表。