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, &quot;asc&quot; ]]" 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>

Ответ 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'],
    });