jQuery dataTables: щелчок по кнопке должен сортировать по убыванию, а затем по возрастанию для всех столбцов


Я пытаюсь изменить направление сортировки по умолчанию. По умолчанию используется порядок по возрастанию, а затем по убыванию. Я пытаюсь обратить его вспять.

Направление сортировки должно быть независимым и применяться ко всем столбцам( количество столбцов зависит от разных таблиц ) сценарий, который я должен инициировать datatable, является универсальным.

Сортировка должна применяться только по щелчку мыши.

Я нашел несколько примеров, но они специфичны для столбцов https://datatables.net/examples/advanced_init/sort_direction_control.html

Вот мой сценарий

jQuery(function($) {
   $(".datatable").dataTable({
    "paging": false,
    "searching": false,
    "info": false,
    "orderCellsTop": true
  });
});
3 2

3 ответа:

Все параметры и настройки имеют значения по умолчанию, определенные во внутреннем объекте DataTable.defaults. Этот объект доступен для изменения через $.fn.dataTable.defaults. Это плохо задокументировано на веб-сайте, но очень хорошо задокументировано в коде. Откройте none minified jquery.таблицы данных.js и поиск DataTable.по умолчанию.

, чтобы изменить порядок по умолчанию для всех столбцов, так что он становится desc, asc :

$.fn.dataTable.defaults.column.asSorting = ['desc', 'asc'];

Установить начальный порядок для первого столбца в desc

$.fn.dataTable.defaults.aaSorting = [[0,'desc']];

Точно так же вы можете просто изменить значения по умолчанию, так что вам не нужно устанавливать какие-либо общие параметры в вашем dataTable() вообще :

$.fn.dataTable.defaults.bPaginate = false;    //paging: false
$.fn.dataTable.defaults.bFilter = false;      //searching: false
$.fn.dataTable.defaults.bInfo = false;        //info: false
$.fn.dataTable.defaults.bSortCellsTop = true; //orderCellsTop: true

См. демонстрацию -> http://jsfiddle.net/f31pncb4/

Это можно сделать при инициализации:

jQuery(function ($) {
    $(".datatable").dataTable({
        "paging": false,
        "searching": false,
        "info": false,
        "orderCellsTop": true,
        aoColumnDefs: [
            {
                orderSequence: ["desc", "asc"],
                aTargets: ['_all']
            }
        ]
    });
});

Ответ Ричарда выше работает, но является подходом наследия. Синтаксис для текущих версий похож и немного проще:

var myTable = $('table').DataTable({
    "columnDefs": [
        {
            "orderSequence" : [ "desc", "asc" ],
            "targets" : "_all"
        }
    ]
});

Немного не по теме, но обратите внимание на заглавную букву " D " в DataTable(), которая возвращает экземпляр api вместо объекта jquery. Это важно, так как выполнение этого способа облегчает доступ к api после инициализации.