jQuery数据表-按隐藏列排序日期

jQuery DataTables - Ordering dates by hidden column

本文关键字:排序 日期 隐藏 数据表 jQuery      更新时间:2023-09-26

我已经工作了几天的数据表,我有这个任务:我需要禁用初始排序并过滤第一列,其中包含日期,如Aug 15,这取决于第四列(2015.08.15),这将被隐藏。

例如,如果我有:

Aug 15    |  2015.08.15
Aug 7     |  2015.08.07
Aug 3     |  2015.08.03
Aug 20    |  2015.08.20

在升序排序中我应该得到:

Aug 3     |  2015.08.03
Aug 7     |  2015.08.07
Aug 15    |  2015.08.15
Aug 20    |  2015.08.20

但是我得到的是字母排序:

Aug 15    |  2015.08.15
Aug 20    |  2015.08.20
Aug 3     |  2015.08.03
Aug 7     |  2015.08.07
我的第一个代码是这样的:

$("#TableBt" + rid).DataTable({
  "aaSorting": [],
  "columns": [
    null,
    null,
    {
      "title": lC2
    },
    {
      "visible": false
    }]

这禁用了我的初始排序,但它按字母顺序排序我的日期列(第一个可见的)。

经过一番研究,我这样修改了代码:

$("#TableBt" + rid).dataTable({
  "asSorting": [],
  "aoColumnDef": [
    {
      "iDataSort": 3,
      "aTargets": [4]
    },
    null,
    {
      "sTitle": lC2
    },
    {
      "bVisible": false,
      "aTargets": [3]
    }]
});

但是现在所有列都是可见的,初始排序再次启用,日期排序只按字母排序。

我做错了什么?

<

解决方案/strong>

您需要使用columnDefs来定位第一列(targets: 0),并定义将使用orderData对第一列进行排序的数据的列。此外,您需要隐藏第四列(targets: 3)与visible: false

$("#TableBt" + rid).DataTable({
   columnDefs: [
       { targets: 0, orderData: 3 },
       { targets: 3, visible: false }    
   ]
});