我们使用Datatables最终日期/时间排序插件(https://datatables.net/blog/2014-12-18)来尝试排序日期列,但没有任何运气让它以正确的格式正确排序日期。页面加载时,下面的脚本运行:jQuery Datatables Ultimate日期/时间排序插件
//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;
}
}
});
按照数据表文件和我对这个SO后(DataTables Ultimate date/time sorting plug-in not working with Intl formats)发现的所有细节都,我在加入date_sortable
作为一个类名<th />
元素在我的HTML,但它看起来像render
函数未被调用,因为我的console.log[...]
条目从未运行。我可以在生成的HTML中看到该类位于我的<th />
元素上,并且显示的日期格式正确('n/j/Y'
,使用PHP),所以我处于完全损失状态。
一切看起来设置正确,所以这里的任何提示/指针?日期排序似乎是相当随机的,有些日期如1/6/2016显示在中间(见截图),这根本没有意义。
我会说这张表显示〜2,055条记录,所以它可能是一个性能的东西?目前这并不是用API调用加载的,所以所有记录都在生成的HTML中作为单个文件。
它不是随机的,它是字符串排序而不是数字。在这个例子中,它的排序顺序为2,2,2,6,7 –