jQuery DataTables - 按隐藏列排序日期

时间:2015-09-18 12:40:52

标签: javascript jquery sorting datatables

我和DataTables一起工作了几天,我有这个任务: 我需要禁用初始排序并过滤第一列,其中包含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]
    }]
});

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

我做错了什么?

1 个答案:

答案 0 :(得分:6)

  

<强>解

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

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

<强>样本

请参阅this jsFiddle以获取代码和演示。