【问题标题】:Datetime plugin doesn't sort in Datatable日期时间插件不在数据表中排序
【发布时间】:2019-04-08 08:13:06
【问题描述】:

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

SQL Server 中的字段是日期时间。在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>

我已经检查了一切。

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

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

这是我的代码:

$(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"}
    });
});

【问题讨论】:

  • 我猜你将不得不使用包含 YYYY/MM/DD 日期的hidden column 进行排序。
  • 谢谢!这是一个非常好的替代解决方案!

标签: jquery datetime datatables


【解决方案1】:

在您的情况下,您将不得不为列使用render 方法的参数type。如需进一步了解此内容,请参阅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

【讨论】:

  • 这就是我要找的!谢谢!我只是不知道为什么 $.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss'); (终极插件)在我的情况下不起作用。
猜你喜欢
  • 2017-10-28
  • 2016-07-16
  • 2018-07-08
  • 2016-09-10
  • 1970-01-01
  • 2019-05-09
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多