Возможно, проблема в вашем columnDefs
задании.
"columnDefs": [{
"searchable": false,
"orderable": false,
"targets": [0, 1, 2, 3, 4],
"type": 'natural'
}],
Вы используете термин "type": 'natural'
, что означает, что при сортировке данные просто сортируются в алфавитном порядке.
Например, дата Dec 16, 2018
будет фактически отсортирована как меньше чем Feb 16, 2018
, что можно увидеть, выполнив простое сравнение строк.
"Dec 16, 2018" < "Feb 16, 2018" = true
Поскольку вы используете момент.JS, вы хотите настроить ваши columnDefs так, чтобы столбцы, которые имеют формат DateTime, им было присвоено "type": "date"
.
"columnDefs": [
//non-date fields
{
"searchable": false,
"orderable": false,
"targets": [0, 2, 3, 4],
"type": 'natural'
},
//date-fields
{
"searchable": false,
"orderable": true,
"targets": 1,
"type": 'date'
}
],
Кроме того, вам не нужен атрибут aoColumns
.aoCoulumns
является устаревшей версией columnDefs.Вся информация в aoColumns
лучше выражена в атрибуте columnDefs
.На самом деле, предоставление того и другого может также способствовать решению ваших проблем, поскольку вы устанавливаете атрибуты столбца одним способом, а затем изменяете способ его работы другими способами.
Вот простой пример использования датытип.
$(document).ready( function () {
var table = $('#example').DataTable({
columnDefs: [{
"targets": 1,
"type": 'date',
}]
});
} );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://nightly.datatables.net/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/js/jquery.dataTables.js"></script>
<div class="container">
<table id="example" class="display nowrap" width="100%">
<thead>
<tr>
<th>id</th>
<th>Date</th>
</tr>
</thead>
<tfoot>
<tr>
<th>id</th>
<th>Date</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>1</td>
<td>Dec 16, 2018</td>
</tr>
<tr>
<td>1</td>
<td>Jan 16, 2018</td>
</tr>
<tr>
<td>2</td>
<td>Feb 16, 2018</td>
</tr>
<tr>
<td>3</td>
<td>June 16, 2018</td>
</tr>
<tr>
<td>4</td>
<td>June 16, 2017</td>
</tr>
<tr>
<td>5</td>
<td>Dec 16, 2016</td>
</tr>
<tr>
<td>6</td>
<td>Jan 16, 2016</td>
</tr>
<tr>
<td>7</td>
<td>Feb 16, 2016</td>
</tr>
</tbody>
</table>
</div>