Datetime插件未在Datatable中排序

时间:2018-11-04 23:15:00

标签: jquery datetime datatables

我无法在我的网站上使用最终的插件(https://datatables.net/blog/2014-12-18)。 我有一个日期时间列。 JSON中列的输入(称为eisodos)为dd/MM/yyyy HH:mm:ss(例如31/10/2018 10:03:00

SQL Server中的字段为Datetime。在query.php中,我将其格式化为dd/MM/yyyy HH:mm:ss并将其编码为JSON。

如果我将其格式化为yyyy/MM/dd HH:mm:ss,则在Datatable插件中排序还可以,但是我希望它像dd/MM/yyyy HH:mm:ss一样显示。

我同时包含两个脚本(最新版本):

<script src="bower_components/moment/min/moment.min.js"></script>

<script src="bower_components/moment/min/datetime-moment.js"></script>

我检查了所有内容。

排序时得到的结果是这样的:

enter image description here

我已经搜索了两天,但找不到解决方法。

这是我的代码:

$(function ()
{
    $.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss');

    var table = $('#example').DataTable(
    {
        ajax: {url: "query.php", dataType: "json", dataSrc: ''},
        "columns": [
            {"data": "eisodos"}
            // I have also tried the following (column render) but nothing changed.
            // "render": function(data, type, full) {return moment(data).format('dd/MM/yyyy HH:mm:ss');}   
        ],
        "language": {"url": "Greek.json"}
    });
});

1 个答案:

答案 0 :(得分:0)

在这种情况下,您将必须使用type方法的参数render作为列。有关此内容的更多信息,请参阅Columns Render。基本上,此参数使您可以设置列数据的格式以用于不同类型的操作(排序,重复显示等)。对于您的情况,您将需要执行以下操作:

$(function ()
{
    $.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss');

    var table = $('#example').DataTable(
    {    
        ajax: {url: "query.php", dataType: "json", dataSrc: ''},
        "columns": [
        {
            "data": "eisodos",
            "render": function(data, type, full)
            {
                if (type == 'display')
                    return moment(data).format('dd/MM/yyyy HH:mm:ss');
                else
                    return moment(data).format('yyyy/MM/dd HH:mm:ss');
            }
        }],
        "language": {"url": "Greek.json"}    
    });
});

在前面的代码中,当要显示操作时,日期将被格式化为西班牙语,对于其他操作(如排序),将使用英语格式。您也可以参考我之前针对类似问题所做的回答:

Sort numeric data.table values that are formatted