Плагин Datetime не сортируется в Datatable - PullRequest
0 голосов
/ 05 ноября 2018

Я не могу получить окончательный плагин (https://datatables.net/blog/2014-12-18) работа для моего сайта. У меня есть столбец даты и времени. Вход для столбца (называемого eisodos) из JSON: 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 голосов
/ 05 ноября 2018

В вашем случае вам придется использовать аргумент type метода 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"}    
    });
});

В предыдущем коде дата будет отформатирована по-испански, когда действие предназначено для отображения, а для других действий (например, сортировка) будет использоваться английский формат. Вы также можете сослаться на этот ответ, который я сделал ранее для аналогичной проблемы:

Сортировка числовых значений data.table в формате

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...