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 - TableTools:导出时隐藏行和列
如何在 Jquery Datatables 中根据条件隐藏列?