DataTables Установите столбец сортировки по умолчанию и установите несортируемые столбцы
Можно ли установить столбец по умолчанию для сортировки после загрузки страницы? Я хочу использовать один вызов с датой для разных таблиц на моем сайте. Можно ли добавить th
класс для достижения этой цели?
Я также хочу отключить сортировку для некоторых столбцов, и, так как я ищу один вызов datatables, чтобы сделать все, есть ли класс, который я могу добавить к th, который сделает его несортируемым?
Это мой скрипт dataTable
if (jQuery().dataTable) {
$('#table-list-items').dataTable({
"fnDrawCallback" : function () {
},
"aLengthMenu": [
[10, 15, 25, 50, 100, -1],
[10, 15, 25, 50, 100, "All"]
],
"iDisplayLength": 25,
"oLanguage": {
"sLengthMenu": "_MENU_ Records per page",
"sInfo": "_START_ - _END_ of _TOTAL_",
"sInfoEmpty": "0 - 0 of 0",
"oPaginate": {
"sPrevious": "Prev",
"sNext": "Next"
}
},
"aoColumnDefs": [{
'bSortable': true,
'aTargets': [0]
}]
});
}
Ответы
Ответ 1
Да, вы можете сделать это с помощью опции aaSorting
, например:
$('.table-asc0').dataTable({
aaSorting: [[0, 'asc']]
});
Чтобы упорядочить по возрастанию первого столбца.
$('.table-asc1').dataTable({
aaSorting: [[1, 'asc']]
});
Для DataTables 1.10
, aaSorting
был заменен на order
.
$('.table-asc0').dataTable({
order: [[0, 'asc']]
});
Ответ 2
УСТАНОВИТЬ НАЧАЛЬНЫЙ ЗАКАЗ (DataTables 1.10)
Используйте order
чтобы установить начальный порядок таблицы.
Например, чтобы отсортировать по второму столбцу в порядке убывания:
$('#example').dataTable({
"order": [[ 1, 'desc' ]]
});
Смотрите этот jsFiddle для кода и демонстрации.
ОТКЛЮЧИТЬ СОРТИРОВКУ ДЛЯ КОЛОННЫ (DataTables 1.10)
Используйте columnDefs
и orderable
чтобы отключить сортировку по определенным столбцам.
Например, чтобы отключить сортировку по третьему и четвертому столбцам:
$('#example').dataTable({
"columnDefs": [
{ "targets": [2,3], "orderable": false }
]
});
Смотрите этот jsFiddle для кода и демонстрации.
УСТАНОВИТЬ ПЕРВОНАЧАЛЬНЫЙ ЗАКАЗ И ОТКЛЮЧИТЬ СОРТИРОВКУ ДЛЯ ТОГО ЖЕ КОЛОННЫ (DataTables 1.10)
Вы можете комбинировать order
возможность установить начальный порядок таблицы и orderable
, чтобы отключить сортировку по одной и той же колонке.
Например:
$('#example').dataTable({
"order": [[ 0, 'desc' ]],
"columnDefs": [
{ "targets": [0], "orderable": false }
]
});
Смотрите этот jsFiddle для кода и демонстрации.
Ответ 3
Это можно сделать с помощью атрибута data-order
данных в таблице HTML, который даст вам необходимую гибкость в таблице по таблицам, в то же время позволяя использовать один вызов для инициализации ваших данных. Таблицы:
<table className="table table-condensed table-striped" data-order="[[ 2, "asc" ]]" id="tableId">
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
<th>Col4</th>
<th>Col5</th>
<th>Col6</th>
</tr>
</thead>
<tbody>
<tr>
<td>Val1</td>
<td>Val2</td>
<td>Val3</td>
<td>Val4</td>
<td>Val5</td>
<td>Val6</td>
</tr>
</tbody>
</table>
Ответ 4
Просто включите следующий код:
$(document).ready(function() {
$('#tableID').DataTable( {
"order": [[ 3, "desc" ]]
} );
}
);
Ссылка:
https://datatables.net/examples/basic_init/table_sorting.html
Ответ 5
работает и работает:
$('#admin').DataTable({
"aaSorting": [[3, 'desc']],
"bPaginate": true,
"bProcessing": true,
"columns": [
{'data' : 'request_code'},
{'data' : 'name_receiver'},
{'data' : 'name_area'},
{'data' : 'created_at'},
{'data' : 'state'},
{'data' : 'city'},
{'data' : 'history'},
],
"ajax": "{{route('my.route.name')}}",
dom: 'Bfrtip',
buttons: ['copy', 'excel', 'print'],
});