DataTables - 返回 ajax 数据的格式

DataTables - Format returning ajax data

我正在 DataTables.net 的 this example 上工作,但我已经进行了修改,以便它可以与我对 API.

的 ajax 调用一起使用

我的问题是我的 API returns DateTime 值是这样的...

创建时间=2015-02-13T00:00:00

我需要能够将其转换为只是没有时间的日期 table(希望不更改 API)。我已经尝试了我所知道的一切尝试。在这种高级 javascript 方面,我仍然是初学者。我只是想做一个简单的子字符串,但我认为这行不通。好吧,至少我是如何尝试的。

感谢您的帮助!


DataTables v1.10.5

Jquery v1.11.2 (因需要支持IE8)

原问题代码:

$(document).ready(function () {
var table = $('#AllHuddleRecords').DataTable({
    "ajax": "../api/huddle/posts",
    "columns": [
        {
            "className": 'details-control',
            "orderable": false,
            "data": null,
            "defaultContent": ''
        },
        { "data" : "EmpName" },
        { "data": "Created" },
        { "data" : "PriorityName" },
        { "data" : "TopicName" }
    ]
});

感谢cmxl的指导...这是工作代码...

var table = $('#AllHuddleRecords').DataTable({
    "ajax": "../api/huddle/posts",
    "columns": [
        {
            "className": 'details-control',
            "orderable": false,
            "data": null,
            "defaultContent": ''
        },
        { "data" : "EmpName" },
        { "data": "Created" },
        { "data" : "PriorityName" },
        { "data" : "TopicName" }
    ],
    "columnDefs": [
        {
            "render" : function (data, type, row) {
                return new Date(data).toLocaleString();
            },
            "targets": 2
        }
        ]
});

您可以挂接到列渲染事件。请参阅此处的文档: https://datatables.net/examples/advanced_init/column_render.html

    $(document).ready(function() {
    $('#example').dataTable( {
        "columnDefs": [
            {
                // The `data` parameter refers to the data for the cell (defined by the
                // `data` option, which defaults to the column being worked with, in
                // this case `data: 0`.
                "render": function ( data, type, row ) {
                    return data.slice(0, data.indexOf('T'));
                },
                "targets": 0
            },
            { "visible": false,  "targets": [ 3 ] }
        ]
    } );
} );

或者,如果您想将字符串解析为日期,您可以在此处参考此答案: Converting string to date in js

//...
"render": function ( data, type, row ) {
    return new Date(data).toString();
}
//...

在这里您可以更深入地了解 Javascript 中的 Date 对象: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date

是否可以在将数据发送到数据 table 之前对数据进行一些预处理,例如,如果您要将以下数据插入数据 table,请使用 Date.parse() 在您的数据的每个元素上转换为所需的格式?

var ajaxData = {
  "data": [{
    "EmpName": "Bob",
    "Created": "2015-02-13T00:00:00",
    "PriorityName": "Priority1",
    "TopicName": "Topic1"
  }]
};

$(ajaxData.data).each(function() {
  var dateMillis = new Date(this.Created);
  this.Created = dateMillis.getMonth() + "/" + dateMillis.getDay() + "/" + dateMillis.getFullYear();

});

请注意,如果您想对日期列进行排序,那么解决方案很可能是预处理数据并使用 Date.parse() 将日期转换为毫秒,然后使用渲染将日期转换为cmxl 建议的可读格式。祝你好运!