2011-07-01 4 views
7

J'utilise le jQuery Tablesorter 2.0 plugin pour fournir certaines fonctionnalités de base de tri de table.jQuery tablesorter avec des numéros de ligne

Sur ma table, j'aimerais avoir une colonne pour le numéro de ligne. Le problème, c'est que le plugin Tablesorter trie cette colonne avec tout le reste. J'ai essayé de définir l'attribut "headers" pour la première colonne, mais cela supprime seulement la capacité de tri. Cela n'empêche pas la réorganisation de la colonne lorsque je la classe par une colonne différente.

Est-ce qu'une liste de numéros de ligne est possible avec ce plugin? Pouvez-vous penser à un moyen de contourner le problème?

+2

Pour quiconque downvoted ... si vous avez un problème avec quelque chose sur StackOverflow, il est préférable de laisser un commentaire expliquant votre raisonnement. Sinon, personne ne peut apprendre, et votre downvote drive-by ne vaut rien. – Brad

Répondre

12

Il semble que vous deviez renuméroter les lignes chaque fois que la table est triée. Essayez ceci (utiliser après avoir déjà initialisé tablesorter sur votre table):

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

C'est parfait! Le seul inconvénient est que les anciens numéros apparaissent pendant un bref instant pendant la renumérotation, mais je suis sûr que rien ne peut être fait à ce sujet. Merci encore! – Brad

+0

De rien, heureux je pourrais aider :) –

+0

merci pour ce code, juste l'habitude de résoudre un mal de tête, fonctionne un régal. –

0

J'ai trouvé une solution sur le ordenation des numéros ordinaux, à partir du code @ Chris Laplante. La solution exécute le déclencheur sortEnd juste la première fois, lorsque la table est créée. Donc je dois éditer le code source. Avoir à prendre en compte lors de la mise à jour du logiciel tablesorter.

Dans le fichier jquery.tablesorter.js autour de la ligne 370, on peut trouver le déclencheur:

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

pour le changement:

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

et définir la variable runonce certains placer sur la fonction appendToTable:

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

Vous pouvez vérifier le résultat sur: http://formulaeweb.es/resultados.php en cliquant sur "Puntos".

Questions connexes