JQuery DataTables меняет порядок на desc при сортировке - PullRequest
6 голосов
/ 16 сентября 2010

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

То, что я хочу сделать, - это когда пользователь нажимает на заголовок столбца, чтобы отсортировать этот столбец, я хочу, чтобы он сначала упорядочивался по убыванию, а не по возрастанию. Есть ли способ сделать это?

Ответы [ 6 ]

12 голосов
/ 16 сентября 2010

Посмотрите на это: Пример управления направлением сортировки DataTables

Вы можете сделать что-то вроде:

$(document).ready(function() {
    $('#example').dataTable( {
        "aoColumns": [
            { "asSorting": [ "desc", "asc" ] }, //first sort desc, then asc
        ]
    } );
} );
4 голосов
/ 28 апреля 2015

Текущая версия DataTables (1.10) предоставляет следующий способ переключения этого порядка сортировки по умолчанию со свойством orderSequence в columnDefs (или columns, но менее гибким).

Вот документация по orderSequence.

"columnDefs": [
    { "orderSequence": [ "desc", "asc"], "targets": [ 1 ] },
]

Как также упоминается, вы можете принудительно сортировать столбец по только при нажатии как DESC или ASC, от которого ваш интерфейс может очень выиграть.

В моем случае мне нужно было иметь столбцы по убыванию их сортировки при первоначальном щелчке для неопределенного числа столбцов, поэтому я решил переключить пример, чтобы указать имя class заголовка столбца, а не явно определять каждый столбец как "targets":[1],"targets":[2],...[n] или программно построить массив индексов столбцов, о которых я заботился.

Вы можете настроить таргетинг на столбцы несколькими способами в соответствии с здесь .

Конечным результатом является определение таблицы следующим образом:

<table><thead><tr>
    <th class='descendFirst'>DESCend when first clicked</th>
    <th>a normally sorted ASC->DESC->... column</th>
    ...
</tr></thead></table>

И Таблица данных уполномочена как таковая:

$("#table").dataTable({
    "columnDefs": [
        {"orderSequence": ["desc","asc"], "targets":"descendFirst" },
    ]
});

Вуаля! Сначала щелкните сортировку по убыванию во всех столбцах с пометкой <th>, помеченной классом «downndFirst» (произвольно выбранным описательным именем класса).

2 голосов
/ 07 мая 2014

Если кто-то, например Дэйв и я, ищет способ установить порядок сортировки для всех столбцов, вам может помочь следующее. Чтобы изменить порядок сортировки для всех столбцов, я настроил цикл для изменения настроек после создания таблицы:

$(document).ready(function() {
    var example_table = $('#example').dataTable();
    $.each(example_table.dataTableSettings[0].aoColumns, function(key, column) {
        column.asSorting = [ "desc", "asc" ];
    } );
} );

Надеюсь, это поможет. Протестировано на jQuery 1.11.0 и DataTables 1.10.0

2 голосов
/ 01 февраля 2012

В ответ на последнюю сортировку, вот что я придумал -
(я просто ненавижу сортировку заготовок первой !!)

Включите эти пользовательские функции сортировки

// custom sort functions
jQuery.fn.dataTableExt.oSort['text-blankslast-asc'] = function (x, y) {  
   x = (x == "") ? String.fromCharCode(255) : x;  
   y = (y == "") ? String.fromCharCode(255) : y;  
   return ((x < y) ? -1 : ((x > y) ? 1 : 0));  
};  

jQuery.fn.dataTableExt.oSort['text-blankslast-desc'] = function (x, y) {  
   x = (x == "") ? String.fromCharCode(0) : x;  
   y = (y == "") ? String.fromCharCode(0) : y;  
   return ((x < y) ? 1 : ((x > y) ? -1 : 0));  
};  

Применить теги сортировки к соответствующим столбцам

// init example  
$('#table2').dataTable({  
   "bJQueryUI": true,  
   "aoColumns": [  
      null,  
      { "sType": "text-blankslast" },  
      { "sType": "text-blankslast" },  
      { "sType": "text-blankslast" },  
      null  
   ]  
});  
0 голосов
/ 25 января 2017

Это работает для меня:

       settings = {
           aoColumnDefs: [
            {
                orderSequence: ["desc", "asc"],
                aTargets: ['_all']
            }
        ]};

        $('.dataTable').DataTable(settings);
0 голосов
/ 17 ноября 2011

Единственный способ получить последние пустые значения - это немного взломать (так как сортировка работает правильно).

Вместо того, чтобы возвращать пустые значения с вашего сервера, возвращайте что-то вроде: «[Blank]»

Я не проверял это, но я почти уверен, что квадратные скобки появятся после буквенно-цифровых кодов,Также квадратные скобки традиционно символизируют то, что еще не было завершено или подтверждено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...