Здесь страница:
Мне нужно сортировать по столбцу Date, прямо сейчас он должен быть прочитан 6 ноября, 5 ноября и, наконец, 7 октября.
Как мне это сделать?
Здесь страница:
Мне нужно сортировать по столбцу Date, прямо сейчас он должен быть прочитан 6 ноября, 5 ноября и, наконец, 7 октября.
Как мне это сделать?
Ваш текущий код:
$('table').dataTable({
// display everything
"iDisplayLength": -1
});
Что вы можете сделать:
oTable = $('table').dataTable({
// display everything
"iDisplayLength": -1
});
oTable.fnSort( [ [0,'desc'] ] ); // Sort by first column descending
Но, как указано в комментарии ниже, это может быть более чистый метод:
$('table').dataTable({
// display everything
"iDisplayLength": -1,
"aaSorting": [[ 0, "desc" ]] // Sort by first column descending
});
DataTables использует Алфавитный порядок как метод сортировки по умолчанию. На самом деле это происходит здесь.
Существует два решения:
Если вы хотите, чтобы ваши пользователи могли сортировать столбец самостоятельно, вы можете использовать первое решение.
--------------- Первое решение:
Нам нужно сообщить плагину DataTable, что делать с нашими столбцами. Вам нужно будет использовать свойство "aoColumns":
$('table').dataTable({
// display everything
"iDisplayLength": -1,
"aoColumns":[
{"sType": "shaheenery-date"},
{"bSortable": true},
{"bSortable": true},
{"bSortable": true},
{"bSortable": true}
]
});
Затем определите метод сортировки "shaheenery-date-asc" и "shaheenery-date-desc". Вам также нужна функция getDate, которая преобразует дату в числовом формате:
function getDate(a){
// This is an example:
var a = "Sunday November 6, 2011";
// your code =)
// ...
// ...
// You should output the result as YYYYMMDD
// With :
// - YYYY : Year
// - MM : Month
// - DD : Day
//
// Here the result would be:
var x = 20111106
return x;
}
jQuery.fn.dataTableExt.oSort['shaheenery-date-asc'] = function(a, b) {
var x = getDate(a);
var y = getDate(b);
var z = ((x < y) ? -1 : ((x > y) ? 1 : 0));
return z;
};
jQuery.fn.dataTableExt.oSort['shaheenery-date-desc'] = function(a, b) {
var x = getDate(a);
var y = getDate(b);
var z = ((x < y) ? 1 : ((x > y) ? -1 : 0));
return z;
};
--------------- Второе решение:
Мы также будем использовать свойство "aoColumns". На этот раз мы скажем DataTable скрыть последний столбец, который будет содержать дату в Unix Timestamp. Нам также необходимо определить этот столбец как по умолчанию для сортировки с помощью "aaSorting":
$('table').dataTable({
// display everything
"iDisplayLength": -1,
"aaSorting": [[ 5, "desc" ]],
"aoColumns":[
{"bSortable": false},
{"bSortable": true},
{"bSortable": true},
{"bSortable": true},
{"bVisible": false}
]
});
oTable = $('#DataTables_Table_0').dataTable({ //table id -->DataTables_Table_0
iVote: -1, //field name
"bRetrieve":true
});
oTable.fnSort( [ [1,'desc'] ] ); // Sort by second column descending
$('#id').dataTable( { "bSort": true, "aoColumnDefs": [{ 'bSortable': false, 'aTargets': [ 1 ] } ] });
В существующих ответах используется устаревший синтаксис DataTables. Версии 1.10+ должны использовать следующий синтаксис:
$('table').dataTable({
"pageLength": -1, //display all records
"order": [[ 0, "desc" ]] // Sort by first column descending
});
Ссылка:
В последней версии таблиц данных вы можете сортировать по индексу столбца
var data_table = $('#data-table').DataTable();
data_table.order( [7,'desc'] ).draw();
Надеюсь, что это поможет.