【问题标题】: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      相关资源
      最近更新 更多