Как решить ошибку mData для сортировки Даты в JS Таблица? - PullRequest
1 голос
/ 10 апреля 2020

Я хочу отсортировать дату, используя функцию в таблице, но получаю эту ошибку.

Uncaught TypeError: Cannot read property 'mData' of undefined

Это часть данных моей таблицы. У меня проблема с датой сортировки, поэтому я создаю функцию для сортировки.

enter image description here

Это мой JS и датированный, я использую его специально отображать их функции, такие как окно поиска, экспорт, нумерация страниц.

JS

    "<table id='' class='table table-striped Layer3Table'>"+
        "<thead>"+
            "<tr>"+
                "<th class='text-center'>Activity Name</th>"+
                "<th class='text-center'>Owner</th>"+
                "<th class='text-center'>Plan Start Date</th>"+
                "<th class='text-center'>Plan Finish Date</th>"+
                "<th class='text-center'>Actual Start Date</th>"+
                "<th class='text-center'>Actual Finish Date</th>"+
            "</tr>"+
        "</thead>";
        $.each(value2.l3_task, function(key, value3){
            project += 
            "<tbody>"+
                "<tr>"+
                    "<td class='text-center'>"+value3.task_name+"</td>"+
                    "<td class='text-center'>"+value3.task_owner+"</td>"+
                    "<td class='text-center'>"+value3.task_planned_start_date+"</td>"+
                    "<td class='text-center'>"+value3.task_planned_end_date+"</td>"+
                    "<td class='text-center'>"+value3.task_start_date+"</td>"+
                    "<td class='text-center'>"+value3.task_end_date+"</td>"+
                "</tr>"+
            "</tbody>";
        });
        project +=
    "</table>"+

    // Only this 4 that I want to use sorting function.
    $('table.Layer3Table').DataTable({
        columns:[
            {data: "task_planned_start_date", render: handlerRenderDate},
            {data: "task_planned_end_date", render: handlerRenderDate},
            {data: "task_start_date", render: handlerRenderDate},
            {data: "task_end_date", render: handlerRenderDate},
        ]
    });

, и это моя функция (формат ISO 8601).

    function handlerRenderDate(data, type){
        if (type === 'sort') {
            return data;
        }
    }

1 Ответ

0 голосов
/ 10 апреля 2020

https://jsfiddle.net/gtyow9sq/1/ пример ссылки, которую я написал

причина отсутствует столбец. Вам нужно написать все столбцы, а в вашей функции отфильтровать ваш вид. В примере я импортировал момент. js для сортировки даты

  $('table').DataTable({
        columns:[
            {Data: "task_name"},
            {Data: "task_owner"},
            {Data: "task_planned_start_date", render: handlerRenderDate},
            {Data: "task_planned_end_date", render: handlerRenderDate},
            {Data: "task_start_date", render: handlerRenderDate},
            {Data: "task_end_date", render: handlerRenderDate},
        ]
    });


  function handlerRenderDate(data, type){
              return type === 'sort' ? data : moment(data).format('DD.MM.YYYY');

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