我和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]
}]
});
但现在所有列都可见,初始排序再次启用,日期排序仅按字母顺序排列。
我做错了什么?
答案 0 :(得分:6)
<强>解强>
您需要使用columnDefs
定位第一列(targets: 0
)并定义用于使用orderData
对第一列进行排序的数据列。您还需要使用targets: 3
隐藏列(visible: false
)。
$("#TableBt" + rid).DataTable({
columnDefs: [
{ targets: 0, orderData: 3 },
{ targets: 3, visible: false }
]
});
<强>样本强>
请参阅this jsFiddle以获取代码和演示。