【发布时间】:2016-09-10 02:25:26
【问题描述】:
我们正在使用 Datatables 终极日期/时间排序插件 (https://datatables.net/blog/2014-12-18) 来尝试对日期列进行排序,但无法让它以正确的格式正确排序日期。页面加载时,会运行以下脚本:
//sets the date format for datatables for sorting purposes
//reference: https://datatables.net/blog/2014-12-18
$.fn.dataTable.moment( 'M/D/YYYY' );
/* Datatables */
$('.datatable').DataTable({
language : {
search : "_INPUT_",
searchPlaceholder : "Search...",
paginate : {
"next" : '<i class="fa fa-chevron-right"></i>',
"previous" : '<i class="fa fa-chevron-left"></i>'
}
},
responsive : {
details : {
display : $.fn.dataTable.Responsive.display.childRowImmediate,
type : 'column'
}
},
order : [0, 'desc'],
//date sorting
columnDefs:
{
targets: 'date_sortable',
render: function ( data, type, full, meta ) {
if(type === 'display'){
if(data){
var mDate = moment(data);
data = (mDate && mDate.isValid()) ? mDate.format("M/D/YYYY") : "";
console.log('rewrote data to ' + data);
}
}
console.log('date_sortable rendered');
return data;
}
}
});
根据 Datatables 文档和我在此 SO 帖子 (DataTables Ultimate date / time sorting plug-in not working with Intl formats) 上找到的详细信息,我在我的 HTML 中的 <th /> 元素上添加了 date_sortable 作为类名,但它看起来像 @987654328 @ 函数没有被调用,因为我的 console.log[...] 条目从未运行。我可以在生成的 HTML 中看到该类位于我的 <th /> 元素上,并且显示的日期格式正确('n/j/Y',在 PHP 中),所以我完全不知所措。
一切看起来都设置正确,所以这里有什么提示/指针吗?日期排序在本质上似乎是相当随机的,具有日期的条目(例如 2016 年 1 月 6 日)显示在中间(见截图),这根本没有意义。
我会说这张表显示了约 2,055 条记录,这可能是性能问题吗?这目前没有通过 API 调用加载,因此所有记录都在生成的 HTML 中作为单个文件。
【问题讨论】:
-
它不是随机的,它是字符串排序而不是数字。在此示例中,它按 2、2、2、6、7 的顺序排序
标签: php jquery datatables