Jquery Tablesorter сортировать тот же столбец после обновления - PullRequest
8 голосов
/ 18 февраля 2010

У меня есть таблица, которая обновляется с помощью ajax и после обновления, если она отсортирована, но мне нужно отсортировать не фиксированный столбец, а тот же столбец, который последний раз щелкали перед обновлением.

function tableUpdated() {
$(".tablesorter").trigger("update");
//alert($(".tablesorter").sorting);
var sorting = [[7, 0]];
$("table").trigger("sorton", [sorting]);
}

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

Ответы [ 6 ]

5 голосов
/ 02 марта 2010

jQuery's .data() поможет вам здесь. Всякий раз, когда пользователь щелкает для сортировки таблицы, сохраняйте столбцы в самой таблице. В функции сортировки добавьте это:

$("#table").data('sorting', selectedColumn);

Теперь элемент с id="table" имеет свойство sorting со значением selectedColumn. В tableUpdated вы можете использовать эти данные:

function tableUpdated() {
    $(".tablesorter").trigger("update");
    var sorting = [[$("#table").data('sorting'), 0]];
    $("#table").trigger("sorton", [sorting]);
}

Данные, добавленные с помощью .data(), могут быть еще более сложными, что позволяет добавлять объекты данных. Подробнее см. на этой странице .

3 голосов
/ 05 января 2012

Используя ваш код, вы можете сделать что-то вроде этого (предположим, что ваш идентификатор таблицы равен # list-table ) для поддержания сортировки текущей таблицы:

function tableUpdated() {
    $("#list-table").trigger("update");
    var sorting = $("#list-table").get(0).config.sortList;
    $("#list-table").trigger("sorton", [sorting]);
}
2 голосов
/ 09 мая 2012

вы можете получить его на событии sortEnd на вашем столе:

var lastSortList;

$table.on('sortEnd', function(e) {
    lastSortList = e.target.config.sortList;
});
0 голосов
/ 13 июля 2014

Сохранение последней сортировки может быть немного меньше, только при запуске ajax, например:

lastSortList=$("table")[0].config.sortList;

Затем верните его после обновления следующим образом:

$("table").trigger("sorton", [lastSortList]);

Не забудьте объявить первую строку в нужной области видимости.

0 голосов
/ 28 апреля 2014

Здесь вы можете заказать с тем же столбцом и добавить новый в сортировщик

var sorting = $("table").get(0).config.sortList;
sorting.push([2,0]); // add an element to the array
$("table").trigger("sorton", [sorting]);
0 голосов
/ 04 марта 2011

После борьбы с этим в течение дня или около того я обнаружил плагин datatables , который имеет сохранение состояния из коробки. Я надеюсь, что это помогает кому-то еще.

...