我有一个网页,我显示的数据的日期列是从应用程序而不是从数据库派生的。初始排序aaSorting正是我所需要的,因为用户希望在第一次访问页面时按此日期对数据进行排序。但是,在我的情况下,我希望它们位于列表的末尾,空值显示在列表的最开头。有没有我可以用来做这个设置?
这个jsfiddle展示了我遇到的问题。 https://jsfiddle.net/k4pmL8j0/4/
$(document).ready( function () {
$('#example').dataTable( {
"sScrollY": "460px",
"sScrollX": "1050px",
"bPaginate": false,
"bFilter": false,
"bInfo": false,
"bSortable": true,
"aaSorting": [[4,'asc']],
"oLanguage": {"sZeroRecords": "", "sEmptyTable": ""}
});
} );
答案 0 :(得分:1)
由于datatables.net上的优秀人员,我得到了它的工作。我最终不得不覆盖默认行为,如果无法解析日期,则会返回-Infinity。
$.fn.dataTable.ext.type.order['date-pre'] = function ( d ) {
return Date.parse( d ) || Infinity;
}
答案 1 :(得分:0)
这可能会对您有所帮助,因为它会将date
视为String
:
因此,如果您注意到数据,则date
排序为String
,就像我现在设置aaSorting": [[4,'desc']]
一样,所以它的排序方式如下:
您可以将aaSorting
属性值更改为此aaSorting": [[4,'desc']]
,然后它正在运行,我已更新它。
使用aaSorting": [[4,'desc']]
代替aaSorting": [[4,'asc']]
Jsfiddle link
================================================== ========
如果您想在表格日期中将String
转换为Date
,请使用data-order
属性,现在它将作为Date
使用,并将数据排序为Date
。< / p>
正如@patrick所说,它也将数据排序为数据类型date
,但正如你提出的问题所提到的,它是string
如果您有任何疑问,可以在下面发表评论。
答案 2 :(得分:0)
您可以使用data-order
属性,以便控制该列按该列的排序方式。
对于常规日期,请执行以下操作:
<td data-order="2016-09-06">06-Sep-2016</td>
对于空日期,请使用z
:
<td data-order="z"></td>
这是Fiddle
这是一种很好的方法,因为您可以格式化以任何方式显示的日期。您不限于使用YYYY-MM-DD
格式。