2016-07-05 153 views
0

我使用deferRender填充我的數據表,但是,我仍然試圖完成我在客戶端(不服務器端)的排序。Datatables日期排序與deferRender

此前我已經使用過HTML5數據屬性(http://www.datatables.net/examples/advanced_init/html5-data-attributes.html),但我不知道如何將它用於deferRender。

我試圖使用datetime-moment.js插件(https://datatables.net/blog/2014-12-18),但沒有應用任何排序應用於日期列與此應用(其他表列仍然排序)。

我定義我的表:

$.fn.dataTable.moment('DD/MM/YYYY'); 

$("#my_table").dataTable({ 
    dom: "Bfrtip", 
    ajax: { 
    "url": $('#my_table').data('json-source'), 
    "dataSrc": "" 
    }, 
    deferRender: true 
}); 

UPDATE

我使用與createdRow回調沒有成功的HTML5數據屬性的嘗試:

createdRow: function(row, data, dataIndex) { 
    var rowDate = $(row).find('td').eq(3).text(); 
    var dateOrderDate = moment(rowDate, "DD/MM/YYYY").format("YYYYMMDD"); 
    $(row).find('td').eq(3).attr("data-order", dateOrderDate); 
} 

回答

0

我們的解決方案:

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "date-uk-pre": function (a) { 
    var ukDatea = a.split('/'); 
    return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1; 
    }, 

    "date-uk-asc": function (a, b) { 
    return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
    }, 

    "date-uk-desc": function (a, b) { 
    return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
    } 
}); 

$("#my_table").dataTable({ 
    dom: "Bfrtip", 
    ajax: { 
    "url": $('#my_table').data('json-source'), 
    "dataSrc": "" 
    }, 
    deferRender: true, 
    aoColumns: [ 
    null, 
    null, 
    null, 
    { sType: "date-uk" }, 
    null, 
    null, 
    null, 
    null 
    ] 
});