Подтвердить что ты не робот

JQuery DataTables, сортировать по определенному столбцу?

Здесь страница:

http://csuvscu.com/

Мне нужно сортировать по столбцу Date, прямо сейчас он должен быть прочитан 6 ноября, 5 ноября и, наконец, 7 октября.

Как мне это сделать?

4b9b3361

Ответ 1

Ваш текущий код:

$('table').dataTable({
    // display everything
    "iDisplayLength": -1
});

Что вы можете сделать:

oTable = $('table').dataTable({
    // display everything
    "iDisplayLength": -1
});

oTable.fnSort( [ [0,'desc'] ] ); // Sort by first column descending

Но, как указано в комментарии ниже, это может быть более чистый метод:

$('table').dataTable({
    // display everything
    "iDisplayLength": -1,
    "aaSorting": [[ 0, "desc" ]] // Sort by first column descending
});

Ответ 2

DataTables использует Алфавитный порядок как метод сортировки по умолчанию. На самом деле это происходит здесь.

Существует два решения:

  • Определите свой метод сортировки по дате.
  • Сортировка таблицы с использованием скрытого столбца, содержащего дату в отметке времени Unix (секунды, прошедшие с 1 января 1970 года).

Если вы хотите, чтобы ваши пользователи могли сортировать столбец самостоятельно, вы можете использовать первое решение.

--------------- Первое решение:

Нам нужно сообщить плагину DataTable, что делать с нашими столбцами. Вам нужно будет использовать свойство "aoColumns":

$('table').dataTable({
    // display everything
    "iDisplayLength": -1,
    "aoColumns":[
        {"sType": "shaheenery-date"},
        {"bSortable": true},
        {"bSortable": true},
        {"bSortable": true},
        {"bSortable": true}
    ]
});

Затем определите метод сортировки "shaheenery-date-asc" и "shaheenery-date-desc". Вам также нужна функция getDate, которая преобразует дату в числовом формате:

function getDate(a){
        // This is an example:
        var a = "Sunday November 6, 2011";
        // your code =)
        // ...
        // ...
        // You should output the result as YYYYMMDD
        // With :
        //   - YYYY : Year
        //   - MM : Month
        //   - DD : Day
        //
        // Here the result would be:
        var x = 20111106
        return x;
}

jQuery.fn.dataTableExt.oSort['shaheenery-date-asc'] = function(a, b) {      
        var x = getDate(a);
        var y = getDate(b);
        var z = ((x < y) ? -1 : ((x > y) ? 1 : 0));
        return z;
};

jQuery.fn.dataTableExt.oSort['shaheenery-date-desc'] = function(a, b) {
        var x = getDate(a);
        var y = getDate(b);
        var z = ((x < y) ? 1 : ((x > y) ? -1 : 0));
        return z;
    };

--------------- Второе решение:

Мы также будем использовать свойство "aoColumns". На этот раз мы скажем DataTable скрыть последний столбец, который будет содержать дату в Unix Timestamp. Нам также необходимо определить этот столбец как по умолчанию для сортировки с помощью "aaSorting":

$('table').dataTable({
    // display everything
    "iDisplayLength": -1,
    "aaSorting": [[ 5, "desc" ]],
    "aoColumns":[
        {"bSortable": false},
        {"bSortable": true},
        {"bSortable": true},
        {"bSortable": true},
        {"bVisible": false}
    ]
});

Ответ 3

oTable = $('#DataTables_Table_0').dataTable({   //table id -->DataTables_Table_0

    iVote: -1,  //field name 
    "bRetrieve":true

});

 oTable.fnSort( [ [1,'desc'] ] );   // Sort by second column descending

Ответ 4

 $('#id').dataTable( {
     "bSort": true,
     "aoColumnDefs": [{ 
         'bSortable': false, 
         'aTargets': [ 1 ] }
      ]
});

Ответ 5

В существующих ответах используется устаревший синтаксис DataTables. Версии 1.10+ должны использовать следующий синтаксис:

$('table').dataTable({
    "pageLength": -1,  //display all records
    "order": [[ 0, "desc" ]] // Sort by first column descending
});

Ссылка:

Ответ 6

В последней версии таблиц данных вы можете сортировать по индексу столбца

var data_table = $('#data-table').DataTable();
data_table.order( [7,'desc'] ).draw();

Надеюсь, что это поможет.