2010-02-18 17 views
8

Mam tabelę, która jest aktualizowana za pomocą ajax i po aktualizacji, jeśli jest posortowana, ale muszę posortować nie stałą kolumnę, ale tę samą kolumnę, która została ostatnio kliknięta przed aktualizacją.Jquery Tablesorter sortuj tę samą kolumnę po aktualizacji

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

W moim kodu powyżej muszę umieścić mój wybrany indeks kolumny zamiast 7

Odpowiedz

5

jQuery .data() pomoże tutaj. Za każdym razem, gdy użytkownik kliknie, aby posortować tabelę, przechowaj kolumny w samej tabeli. Wewnątrz funkcji sortowania, dodać to:

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

Teraz element z id="table" ma właściwość sorting z wartością selectedColumn. W tableUpdated, można użyć tych danych:

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

Dane dodawane przy użyciu .data() może być jeszcze bardziej skomplikowane, co pozwala na dodawanie obiektów danych. Aby uzyskać więcej informacji, patrz this page.

+0

Dzięki, spróbuję ... –

+0

Po pierwsze: dziękuję za to. Po drugie: czy wyszukiwanie 0 w danych nie powoduje, że jest domyślnie rosnące \ malejące (zapominam, które to jest), a nie wybrana przez użytkownika wartość? – javamonkey79

+0

@ javamonkey79: Zakładając, że to właśnie 0, masz rację. To może być kolejne dobre miejsce do użycia .data(). Zapisz kierunek sortowania jako inną właściwość na stole i zaktualizuj go, gdy kierunek sortowania zostanie zmieniony. – Aaron

0

Po walce z tym przez dzień lub tak znalazłem datatables plugin, który ma stan oszczędności po wyjęciu z pudełka. Mam nadzieję, że to pomoże komuś innemu.

3

Używając kodu, można zrobić coś takiego (załóżmy Identyfikator tabela jest # lista-table), aby utrzymać aktualną tabelę Sortowanie:

function tableUpdated() { 
    $("#list-table").trigger("update"); 
    var sorting = $("#list-table").get(0).config.sortList; 
    $("#list-table").trigger("sorton", [sorting]); 
} 
2

można go podnieść na „sortEnd” impreza na stole:

var lastSortList; 

$table.on('sortEnd', function(e) { 
    lastSortList = e.target.config.sortList; 
}); 
0

Tutaj można zamówić z tej samej kolumnie i dodać nowy do sorter

var sorting = $("table").get(0).config.sortList; 
sorting.push([2,0]); // add an element to the array 
$("table").trigger("sorton", [sorting]); 
0

Może nieco mniej zasobów, aby zapisać ostatni rodzaj tylko podczas uruchamiania ajax tak:

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

Następnie dostać go z powrotem po aktualizacji jak ta:

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

Pamiętaj, aby zadeklarować pierwszy linia w odpowiednim zakresie.

Powiązane problemy