jQuery DataTables - 按隐藏列排序日期

Dan*_*ana 1 javascript sorting jquery 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
Run Code Online (Sandbox Code Playgroud)

按升序排序我应该得到:

Aug 3     |  2015.08.03
Aug 7     |  2015.08.07
Aug 15    |  2015.08.15
Aug 20    |  2015.08.20
Run Code Online (Sandbox Code Playgroud)

但我按字母顺序排序:

Aug 15    |  2015.08.15
Aug 20    |  2015.08.20
Aug 3     |  2015.08.03
Aug 7     |  2015.08.07
Run Code Online (Sandbox Code Playgroud)

我的第一个代码是这样的:

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

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

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

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

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

我究竟做错了什么?

Gyr*_*com 7

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

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

DEMO

有关代码和演示,请参阅此jsFiddle.