Jquery datatable排序对日期列不起作用?
我有一个jquery数据表,其中日期列格式为2018年2月16日,但排序时,排序不正确 我已经使用了所有提到的与日期相关的列类型 但似乎什么都不管用。我如何解决它 这是密码Jquery datatable排序对日期列不起作用?,jquery,datatables,datatables-1.10,Jquery,Datatables,Datatables 1.10,我有一个jquery数据表,其中日期列格式为2018年2月16日,但排序时,排序不正确 我已经使用了所有提到的与日期相关的列类型 但似乎什么都不管用。我如何解决它 这是密码 Sr 日期 var-table=$(“#JsDataTable”).DataTable({ 滚动:“50vh”, 对,, “aaData”:回应, “pagingType”:“完整编号”, “dom”:“rt”, “sDom”:“Rfrtlip”, “宾福”:没错, “长度菜单”:[ [10, 20, 30, -1],
Sr
日期
var-table=$(“#JsDataTable”).DataTable({
滚动:“50vh”,
对,,
“aaData”:回应,
“pagingType”:“完整编号”,
“dom”:“rt”,
“sDom”:“Rfrtlip”,
“宾福”:没错,
“长度菜单”:[
[10, 20, 30, -1],
[10,20,30,“全部”]
],
“columnDefs”:[{
“可搜索”:错误,
“可订购”:错误,
“目标”:[0,1,2,3,4],
“类型”:“自然”
}],
“命令”:[
[1,‘asc’]
],
“aoColumns”:[{
“mData”:空
},
{
“mData”:“日期”,
“bSortable”:正确,
“sType”:“天然”
},
],
“搜索”:没错,
“分页”:正确,
“bAutoWidth”:假,
“fixedColumns”:false,
//订单:[],
});
问题可能出在您的columnDefs
作业中
"columnDefs": [{
"searchable": false,
"orderable": false,
"targets": [0, 1, 2, 3, 4],
"type": 'natural'
}],
您使用的术语是“type”:“natural”
,这意味着在执行排序时,它只是对数据进行字母数字排序
例如,日期2018年12月16日
实际上将被排序为小于2018年2月16日
,您可以通过进行简单的字符串比较看到这一点
"Dec 16, 2018" < "Feb 16, 2018" = true
此外,您不需要aoColumns
属性aoCoulumns
是columnDefs的传统版本。aoColumns
中的所有信息最好在columnDefs
属性中表达。事实上,提供这两种方法也可能会导致您的问题,因为您正在以一种方式设置列属性,然后通过其他方式更改其工作方式
下面是一个如何使用日期类型的简单示例
$(文档).ready(函数(){
变量表=$('#示例')。数据表({
columnDefs:[{
"目标":一,,
“类型”:“日期”,
}]
});
} );代码>
身份证件
日期
身份证件
日期
1.
2018年12月16日
1.
2018年1月16日
2.
2018年2月16日
3.
2018年6月16日
4.
2017年6月16日
5.
2016年12月16日
6.
2016年1月16日
7.
2016年2月16日
您可以这样做:
在这个演示中,我用ymdhis格式的日期选取了一个不可见字段,并用下一个不可见字段传递iDataSort,因此您的日期将与该字段一起排序
iDataSort属性用于希望一列按另一列中包含的数据排序的情况。第二列通常是隐藏的
演示:
你能在这里发布你的代码吗?同时添加html代码@普密沙阿,请看我编辑了我的问题。我是指你的回答。我想查看您的日期格式我们如何在jquery数据表中对不同的日期格式进行排序,特别是在我的例子中(2018年2月16日)。我同意知道可以根据一列对另一列进行排序是很有用的,但在这种情况下,以不同格式传递相同的数据作为附加列似乎效率很低,特别是对于大数据集。简单明了,逻辑正确。谢谢我使用它作为列的一部分:[{“data”:“dateEstb”,“type”:“date”}],后跟“order”:[[9,“desc”]]。基本上,它表示列是日期类型,排序是基于该类型应用的。
"columnDefs": [
//non-date fields
{
"searchable": false,
"orderable": false,
"targets": [0, 2, 3, 4],
"type": 'natural'
},
//date-fields
{
"searchable": false,
"orderable": true,
"targets": 1,
"type": 'date'
}
],
$(document).ready(function() {
var dataSet = [
["Test1", "25 Apr 2011", "20110425"],
["Test2", "10 Feb 2011", "20110210"],
["Test3", "20 Apr 2012", "20120420"],
["Test4", "16 Feb 2018", "20180216"],
];
var myTable;
myTable = $('#example').DataTable({
data: dataSet,
"order": [
[1, 'asc']
],
"aoColumns": [null, {
'iDataSort': 2
}, {
"bVisible": false
}]
});
});