按所有列的子集对数据表列进行排序

时间:2015-11-13 14:54:53

标签: javascript jquery datatables

目前我有一个包含我们可能想要显示的所有列的表。我想做的是将一个子集移到前面并隐藏所有其他列。基本上它的样子是这样的:

[标题,姓名,DOB,地址,房屋类型,薪资]等。

我希望能够传递此列表的子集

[姓名,房屋类型,薪水]

并对列表进行排序

[姓名,房屋类型,薪资,职称,DOB,地址]

然而,由于数据表处理colReorder的方式,似乎我不能按标题访问表,而只能通过索引来访问,重绘更新。所以我需要创建某种地图吗?

1 个答案:

答案 0 :(得分:1)

根据docs,您可以将第二个参数传递给colReorder.order以使用原始索引(而不是上次重新排序的索引)。因此,只要您知道每个命名列的原始索引,就可以对它们进行重新排序。像这样:

var originalOrder = [
    "Title", "Name", "DOB", "Address", "House Type", "Salary"
];

var getNewOrder = function(columns){
    var indexes = [];

    // Search for the index of the named column
    for (var i = 0; i < columns.length; i++){
        indexes.push(originalOrder.indexOf(columns[i]));
    }

    // Add the rest of indexes in their original order
    for (var i = 0; i < originalOrder.length; i++){
        if (indexes.indexOf(i) < 0){
            indexes.push(i);    
        }
    }
    return indexes;
};

// Pass it true so colReorder knows these are original indexes
table.colReorder.order(getNewOrder(["Name","House Type", "Salary"]), true);

您可以看到一个有效的例子here