2009-10-23 4 views
16

Nie mogę tego obliczyć. To pytanie było również zadawane tutaj http://www.nabble.com/TableSorter-plugin---default-column-sort-DESC-instead--How--to25180761s27240.html#a25180761 bez odpowiedzi.Jak domyślnie sortować malejąco domyślnie jQuery Tablesorter?

Próbowałem

$.tablesorter.defaults.sortInitialOrder = 'desc'; 

i zmieniając plik jquery.tablesorter.js do domyślnego 'desc', ale to nie działa. Kiedy klikam nagłówki kolumn, pierwszy sort jest wciąż rosnący, więc użytkownik musi kliknąć dwa razy, aby zejść z wartości.

Jak ustawić Sortowanie według domyślnego spadku?

Odpowiedz

15

Wygląda jak błąd w kodzie tablesorter lub nie rozumiem co powinien zrobić parametr sortInitialOrder. W linii 536 ustala kolejność sortowania, sprawdzając ile razy kolumna została posortowana i przyjmując wartość mod 2. Powinna również wziąć pod uwagę wartość sortInitialOrder.

Zmień linię 536 z

this.order = this.count++ % 2; 

do

this.order = this.count++ == 0 ? this.order : (1 - this.order); 

I dodać po tej linii (tak, że pierwsze kliknięcie na innej kolumnie daje domyślne)

$headers.not($cell).each(function() { 
    this.count = 0; 
}); 

i zmień linię 421 z

o.count = s[1]; 

do

o.order = o.count = s[1]; 

tak, że początkowa kolejność jest znoszona, gdy sortList jest stosowana.

Następnie możesz użyć parametru sortInitialOrder do tablesorter, aby ustawić domyślną kolejność pierwszego sortowania dla kolumny. Wszelkie zamówienia podane w sortList będą nadpisywać sortInitialOrder przewidziane dla całej tabela.

Należy zauważyć, że dotyczy to stołu Tablesorter 2.0.

+0

Tak, to działa! Wielkie dzięki! –

+0

Excellent - potrzebne do zrobienia tego w niektórych narzędziach administracyjnych tutaj na stronie :) –

+0

Jesteś mistrzem tvanfosson! – Aaron

7

Wystarczy użyć tego, drugi element w tablicy jest porządek (0 = rosnąco, 1 = malejąco):

.tablesorter({ sortList: [[0, 1]] }); 
+0

po prostu działa =) – Anubis

21

Wypróbuj najnowszą wersję ze strony tablesorter - to wydaje się być ustalona gdzieś pomiędzy wersją 2.0 .3 i 2.0.5.

<script type="text/javascript"> 
$(document).ready(function() 
    { 
     $("#theTable").tablesorter({ 
      sortInitialOrder: 'desc', 
      sortList: [[3,1]] // etc. 

    }); 
    } 
); 
</script> 

... że pracował z najnowszej wersji tablesorter, ale nie z poprzednim miałem. Mam nadzieję, że to pomoże!