2010-10-12 8 views
0

J'ai un élément de tableau HTML appelé "results". Cette table est remplie dynamiquement avec les résultats d'un service Web. Le service Web est déclenché lorsque l'utilisateur clique sur un bouton. Ce bouton appelle la fonction "getResults" illustrée ci-dessous. Cette fonction renvoie une collection d'objets au format JSON. Lorsque le service Web est rétabli, une fonction appelée getResultsCompleted est appelée. Une fois que les résultats ont été dynamiquement ajouté à la table, j'appelle le tablesorter initialiseur là-dessus, mon code ressemble à ceci:Tri dynamique avec JQuery

function getResults() { 
    $("#results > tbody").html(""); 
    $.ajax({ 
    type: "GET", 
    url: "/GetResults", 
    contentType: "application/json; charset=utf-8", 
    success: getResultsCompleted, 
    }); 
} 

function getResultsCompleted(results) { 
    var html = ""; 
    if (results.d.length > 0) {  
    $.each(results.d, function (i, r) { 
     html += getRow(r); 
    }); 
    } 
    $("#results > tbody:last").append(html); 
    $("#results").tablesorter(); 
} 

La première fois que les résultats sont chargés, les travaux de tri fin. Cependant, pour les charges suivantes, le tri ne fonctionne pas correctement. Je me sens comme si j'avais besoin de "détruire" le tablesorter lorsque la fonction "getResults" est appelée. Mais je ne sais pas comment. Peut-être que je me trompe complètement. Quelqu'un peut-il m'aider? Merci

http://tablesorter.com/docs/

Répondre

1

Je l'ai compris. De la documentation:

$ ("table"). Trigger ("mise à jour");

0

Vous pourriez avoir raison avec la destruction de la trieuse de table, mais je n'ai pas l'expérience avec cette trieuse

J'utilise flexigrid et il y a aussi jgrid les deux sont de bons manipulateurs de table

mais vous pourriez essayer d'enlever le contenu et de reconstruire comme si

function getResultsCompleted(results) { 
     var html = ""; 
     if (results.d.length > 0) {  
     $.each(results.d, function (i, r) { 
     html += getRow(r); 
     }); 
    } 
    $("#results > tbody:last").children().remove(); 
    $("#results > tbody:last").append(html); 
    $("#results").tablesorter(); 
    }