当源数据是对象数组时,在数据表中进行默认排序

时间:2016-10-14 19:40:06

标签: javascript jquery datatables

https://datatables.net/examples/basic_init/table_sorting.html

$(document).ready(function() {
    $('#example').DataTable( {
        "order": [[ 3, "desc" ]]
    } );
} );

文档中的示例使用数组数组作为源,并通过指定索引来定义排序。

当源是对象数组时,如何指定默认排序。

我试着把它写成

        "order": [[ "attribute_name", "desc" ]]

但它不起作用。我收到此错误

  

未捕获的TypeError:无法读取属性' aDataSort'未定义的

1 个答案:

答案 0 :(得分:1)

根据documentation订单函数的第一个参数(或您的订单对象数组中的第一个位置)必须是您希望的列的索引 number 排序。

要解决此问题,您可以将属性的值设置为返回所需列的索引的函数。例如:

$(document).ready(function() {
  function findColumn(input) {
    return function(element) {
      return element.sTitle === input;
    }
  }

  var myDataTable = $('#example').DataTable();
  var columnIWant = "Office";
  var indexOfThatColumn = myDataTable.context[0].aoColumns.find(findColumn(columnIWant)).idx;

  myDataTable.order([indexOfThatColumn, "desc"]);
});

不可否认,这非常难看(虽然功能齐全!),但通过一些重构,这可能是一个不错的解决方案。