jQuery DataTables - 按隐藏列排序日期

Posted

技术标签:

【中文标题】jQuery DataTables - 按隐藏列排序日期【英文标题】:jQuery DataTables - Ordering dates by hidden column 【发布时间】:2015-12-15 14:51:37 【问题描述】:

我已经使用 DataTables 工作了几天,我有这个任务: 我需要禁用初始排序并根据第四个(2015.08.15)过滤包含Aug 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]
    ]
);

但现在所有列都可见,初始排序再次启用,日期排序仅按字母顺序工作。

我做错了什么?

【问题讨论】:

【参考方案1】:

解决方案

您需要使用columnDefs 定位第一列 (targets: 0),并使用orderData 定义用于对第一列进行排序的列。您还需要使用visible: false 隐藏第四列(targets: 3)。

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

演示

有关代码和演示,请参阅 this jsFiddle。

【讨论】:

以上是关于jQuery DataTables - 按隐藏列排序日期的主要内容,如果未能解决你的问题,请参考以下文章

jquery.datatables设置列隐藏的方法

jQuery dataTables - TableTools:导出时隐藏行和列

如何按 DataTables 中的隐藏列排序?

如何在 Jquery Datatables 中根据条件隐藏列?

JQuery DataTables:如何显示/隐藏多个表的行详细信息?

JQuery DataTables:显示/隐藏多个表的行详细信息