【问题标题】:Sort Datatables columns by subset of all columns按所有列的子集对 Datatables 列进行排序
【发布时间】:2016-02-15 04:44:59
【问题描述】:
目前我有一个表,其中包含我们可能想要显示的所有列。我想做的是将一个子集移到前面并隐藏所有其他列。基本上它的样子是这样的:
[职称、姓名、出生日期、地址、房屋类型、薪水]等
我希望能够传递此列表的子集
[姓名、房屋类型、薪水]
for 像这样对列表进行排序
[姓名、房屋类型、薪水、职务、出生日期、地址]
但是,由于数据表处理 colReorder 的方式,我似乎无法按标题访问表,而只能按索引访问,这在重绘更新时。所以我可能需要创建某种地图?
【问题讨论】:
标签:
javascript
jquery
datatables
【解决方案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。