Я пытаюсь установить сортировку по умолчанию во второй столбец в моем jquery datatable. Он по умолчанию сортируется по индексу 0. Я использую синтаксис "aaSorting": [[ 1, "asc" ]]
, но он выделяет столбец, который я не хочу при начальной загрузке. Как я могу установить сортировку по умолчанию для определенного столбца, не выделяя столбец так, как будто сортировка не была задействована, и использовался индексный столбец 0.
Параметры сортировки по умолчанию для jquery datatables
Ответ 1
Есть несколько вариантов:
-
Сразу после инициализации DataTables удалите классы сортировки в элементе TD в TBODY.
-
Отключите классы сортировки, используя http://datatables.net/ref#bSortClasses. Проблема заключается в том, что он отключит классы сортировки для запросов на сортировку пользователей - что может быть или не быть тем, что вы хотите.
-
Пусть ваш сервер выведет таблицу в требуемом порядке сортировки и не применяет сортировку по умолчанию в таблице (
aaSorting:[]
).
Ответ 2
Вот реальный код, который делает это...
$(document).ready(function()
{
var oTable = $('#myTable').dataTable();
// Sort immediately with column 2 (at position 1 in the array (base 0). More could be sorted with additional array elements
oTable.fnSort( [ [1,'asc'] ] );
// And to sort another column descending (at position 2 in the array (base 0).
oTable.fnSort( [ [2,'desc'] ] );
} );
Чтобы не выделять столбец, измените CSS так:
table.dataTable tr.odd td.sorting_1 { background-color: transparent; }
table.dataTable tr.even td.sorting_1 { background-color: transparent; }
Ответ 3
Вы можете использовать функцию fnSort, см. подробности здесь:
Ответ 4
Наилучший вариант - отключить сортировку и просто подавать данные с требуемым порядком сортировки (из базы данных или другого источника). Попытайтесь добавить это в свой "datatable": "bSort": false
Ответ 5
Datatables поддерживает атрибуты HTML5 data- * для этой функции.
Он поддерживает несколько столбцов в порядке сортировки (основан на 0)
<table data-order="[[ 1, 'desc' ], [2, 'asc' ]]">
<thead>
<tr>
<td>First</td>
<td>Another column</td>
<td>A third</td>
</tr>
</thead>
<tbody>
<tr>
<td>z</td>
<td>1</td>
<td>$%^&*</td>
</tr>
<tr>
<td>y</td>
<td>2</td>
<td>*$%^&</td>
</tr>
</tbody>
</table>
Теперь мой jQuery просто $('table').DataTables();
, и я получаю свой второй и третий столбцы, отсортированные по порядку desc/asc.
Вот некоторые другие приятные атрибуты для <table>
, которые я повторно использую:
data-page-length="-1"
задает длину страницы для All (проход 25 для длины страницы 25)...
data-fixed-header="true"
... Сделайте предположение
Ответ 6
У меня тоже была эта проблема. Я использовал параметр stateSave
, и это сделало эту проблему.
Удалите эту опцию, и проблема решена.
Ответ 7
используйте это, он работает для меня: "порядок": [[1, "ASC" ]],
Ответ 8
Это сработало для меня:
jQuery('#tblPaging').dataTable({
"sort": true,
"pageLength": 20
});
Ответ 9
Просто включите следующий код:
$(document).ready(function() {
$('#tableID').DataTable( {
"order": [[ 3, "desc" ]]
} );
}
);
Полная справочная статья с примером:
https://datatables.net/examples/basic_init/table_sorting.html