【问题标题】:jQuery DataTables - Ordering dates by hidden columnjQuery DataTables - 按隐藏列排序日期
【发布时间】: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]
    }]
});

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

我做错了什么?

【问题讨论】:

    标签: javascript jquery sorting datatables


    【解决方案1】:

    解决方案

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

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

    演示

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多