目前我有一个包含我们可能想要显示的所有列的表。我想做的是将一个子集移到前面并隐藏所有其他列。基本上它的样子是这样的:
[标题,姓名,DOB,地址,房屋类型,薪资]等。
我希望能够传递此列表的子集
[姓名,房屋类型,薪水]
并对列表进行排序
[姓名,房屋类型,薪资,职称,DOB,地址]
然而,由于数据表处理colReorder的方式,似乎我不能按标题访问表,而只能通过索引来访问,重绘更新。所以我需要创建某种地图吗?
答案 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。