我正在构建一个帮助台应用程序。我有一个名为TicketDetail的模型,其中包含一个使用数据表通过JSON获取数据的表。这是为了定期重新计算票证打开的时间。所花费的时间由一个简单的帮助器格式化,因此它的格式为" dd:hh:mm",但它应按时间(存储为十进制)乘以加权进行排序。这是数据表定义
var table = $('#ticket_details').DataTable({
order: [[ 8, "desc" ], [ 9, "desc" ], [ 2, "asc" ]],
stateSave: true,
deferRender: true,
ajax: $('#ticket_details').data('source'),
"columns": [
{ "data": "reference_number" },
{ "data": "location" },
{ "data": "title" },
{ "data": "parent", className: "hidden-md hidden-sm hidden-xs" },
{ "data": { _:"time_display.time", sort: "time_display.decimal_time"}},
{ "data": "created_by", className: "hidden-md hidden-sm hidden-xs" }
]
} );
setInterval( function () {
table.ajax.reload( null, false ); }, 60000 );
这是一张简化的样本记录,其中机票已开放3天6小时,权重为x2(即3.25 * 2 = 6.5:
{
data: [
{
id: 140,
parent: null,
title: "[",
location: "<a href="/en-GB/stores/123">Bond St</a>",
ticket_sla: "16 Hours",
reference_number: "<a href="/en-GB/ticket_details/140/edit">1606210001</a>",
ticket_sla_weighting: 2,
time_display: {
time: "<span class = "label label-danger">03:06:00</span>",
decimal_time: 6.5
}
]
}
问题是如果我显示decimal_time,数据表会正确排序,但是只要我将格式化的时间放在类中,它就会立即按冒号左边的天数进行排序。 (因此03:06:00和03:18:00将无法正确排序)。
答案 0 :(得分:1)
对于DataTable中的日期/时间排序您需要使用它的排序插件
例如, 您需要包含此js文件:
//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js
//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js
然后,在你的jQuery中使用它作为
$.fn.dataTable.moment( 'HH:mm MMM D, YY' ); // Pass your date time format as param
如需深入参考,请查看: