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

Default sorting in datatables when source data is an array of objects

本文关键字:数据表 默认 排序 数据 对象 数组      更新时间:2023-09-26

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

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

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

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

我试着把它写成

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

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

未捕获的类型错误:无法读取未定义的属性"aDataPort">

根据文档,订单函数的第一个参数(或者在您的情况下订单对象数组中的第一个位置(必须是您希望排序的列的索引编号

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

$(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"]);
});

诚然,这是非常丑陋的(尽管功能性很强!(,但通过一些重构,这可能是一个不错的解决方案。