在使用DataTables jQuery Library绘制列之前操作数据

时间:2017-08-08 14:36:49

标签: javascript jquery datatables

我目前有一个通过AJAX从REST API端点加载数据的表:

$(document).ready(function() {
    var table = $('#pendingTable').DataTable({
        ajax: {
            type: "GET",
            url: url + '/rest/endpoint,
            dataSrc: "_deployments"
        },

    columns: [
        { data: "service_name" },
        { data: "git_organization" },
        { data: "id" },
        { data: "timestamp" },
        { data: "username" },
        { data: "environment" },
        { data: "site" },
        { data: "status" }
    ],
    fnCreatedRow: function( nRow, aData, iDataIndex ) {
        $(nRow).attr('onclick', "openModal(" + aData["id"] + ")");
    },
    order: [
        [2, 'sc']
    ]
});
$('.table-responsive').css('opacity', '0').fadeTo(500, 1, 'swing');
$('#pendingTable_filter input').attr("placeholder", "by User, Org & More");
});

我一直在探索DataTables.net文档,但是在确定操作"时间戳"的最佳行动方案时遇到了问题。在绘制表格之前,将数据(即,将其格式化为适当的日期)。

API提供了修改单个单元格的功能,这些单元格可以通过迭代,列或两者进行迭代。我该如何格式化这个时间戳? (该值只是一个表示毫秒的字符串)。我是否需要某种形式的回调,或者我应该在表格被绘制后操纵数据?

非常感谢任何例子。抱歉,我没有任何例子可以提供我所尝试的内容,其中大部分内容都是伪代码,并没有按照我的想法行事。

1 个答案:

答案 0 :(得分:2)

这就是我使用render完成此操作的方法,它允许您在数据显示之前对其进行操作。

{ data: "id" },
{ 
    'render': function (data, type, full, meta) {
        var date = new Date(parseInt(data.substr(6), 0));
        return ISODateString(date);
    }
},
{ data: "username" },

我创建了一个名为ISODateString的函数,它返回时间戳的日期,月份和年份部分(显然,如果需要,您还可以返回时间部分)。

function ISODateString(d) {
    function pad(n) { return n < 10 ? '0' + n : n }
    return pad(d.getDate()) + '/' + pad(d.getMonth() + 1) + '/' + d.getFullYear();
}