2011-07-01 15 views
7

Używam jQuery Tablesorter 2.0 plugin, aby zapewnić podstawowe funkcje sortowania tabel.jQuery tablesorter z numerami wierszy

Na moim stole chciałbym mieć kolumnę dla numeru wiersza. Problem w tym, że wtyczka Tablesorter sortuje tę kolumnę ze wszystkim innym. Próbowałem ustawić atrybut "nagłówków" dla pierwszej kolumny, ale to tylko usuwa możliwości sortowania. Nie zapobiega to reorganizacji kolumny podczas sortowania według innej kolumny.

Czy istnieje lista numerów wierszy możliwych z tą wtyczką? Czy możesz wymyślić sposób obejścia problemu?

+2

Do każdego, kto zajął ... jeśli masz problem z czymś w StackOverflow, lepiej zostaw komentarz wyjaśniający twoje rozumowanie. W przeciwnym razie nikt nie może się uczyć, a twoja populacja przez drive-by nie jest nic warta. – Brad

Odpowiedz

12

Wygląda na to, że trzeba ponumerować wiersze za każdym razem, gdy tabela jest sortowana. Spróbuj tego (po użyciu go już zainicjowany tablesorter na stole):

var table = $("#myTable"); 
table.bind("sortEnd",function() { 
    var i = 1; 
    table.find("tr:gt(0)").each(function(){ 
     $(this).find("td:eq(0)").text(i); 
     i++; 
    }); 
}); 
+0

To jest idealne! Jedynym minusem jest to, że stare numery pojawiają się przez krótką chwilę, gdy pojawia się numeracja, ale jestem pewien, że nic nie można z tym zrobić. Dzięki jeszcze raz! – Brad

+0

Nie ma za co, cieszę się, że mogłem pomóc :) –

+0

dzięki za ten kod, po prostu przyzwyczajeni do rozwiązania problemu bólu głowy, działa gratka. –

0

znalazłem rozwiązanie o ordenation numerów porządkowych, na podstawie kodu @Chris LaPlante. Rozwiązaniem jest uruchomienie wyzwalacza sortEnd po raz pierwszy, kiedy tabela zostanie utworzona. Więc muszę edytować kod źródłowy. Trzeba brać pod uwagę przy aktualizacji oprogramowania tablesorter.

w pliku jquery.tablesorter.js wokół linii 370, możemy znaleźć spust:

// trigger sortend 
setTimeout(function() { 
    $(table).trigger("sortEnd"); 
}, 0); 

Change dla:

// trigger sortend 
if (runonce == undefined){ 
    setTimeout(function() { 
     $(table).trigger("sortEnd"); 
    }, 0); 
    runonce = true; 
} 

i zdefiniować zmienną RunOnce niektóre Umieść nad funkcją appendToTable:

var runonce;     
function appendToTable(table, cache) { ... 

Możesz sprawdzić wynik: http://formulaeweb.es/resultados.php klikając na "Puntos".

Powiązane problemy