2011-11-10 6 views
0

Je travaille dans l'extension chrome, je veux faire paginer pour la table qui est remplie dynamiquement en utilisant des requêtes sqlite.Pagination dans le script java

J'utilise ce tutoriel pour faire de la recherche de personnes et de faire une modification en fonction init

http://en.newinstance.it/2006/09/27/client-side-html-table-pagination-with-javascript/

Quand je veux obtenir la longueur de la table après l'avoir rempli, le dom semble ne pas être prêt et le retour de résultat zéro de la longueur de la table, voici une partie de mon code ..

function ViewAllNotes(db){ 
var allListItems; 
    var cur = fromDateToString(new Date(),"date"); 

     db.transaction(function(tx) { 
     tx.executeSql("SELECT NOTE_DESC,NOTE_DATE,NOTE_TIME FROM NOTES where NOTE_DATE = ? order by NOTE_TIME desc ",[cur],function(tx,result){ 
      alert(result.rows.length); 

      for(i=0;i< result.rows.length;i++){ 
       tr= "<tr>"; 
       tr=tr+ "<td>"+ result.rows.item(i)['NOTE_DESC']+"</td>"; 
        tr=tr+ "<td>"+ result.rows.item(i)['NOTE_TIME']+"</td>"; 
       tr=tr+ "</tr>"; 
       allListItems+=tr; 

      } 


      var tableContent= " <thead><tr><th id='activityHeader'>Activity</th> <th>Time</th></tr></thead>"; 
      tableContent = tableContent+"<tbody>"+allListItems+"</tbody>"; 

      $("table#notes").append(tableContent); 
       //$('#notes').dataTable(); 
       },onError); 

     }); 

    } 

EDIT au début du fichier js je fais comme t son

ViewAllNotes(db); 
var rows = document.getElementById("notes").rows; 
alert("rows "+rows.length); 

puis appeler la classe de téléavertisseur, mais aussi avec zéro il alerte?

Répondre

2

Les appels SQL sont aysynchrones. Votre code qui teste la longueur n'aura pas une longueur disponible jusqu'à ce que le SQL se termine et déclenche le rappel.

+0

s'il vous plaît vérifier à nouveau la question, je l'édite après votre réponse. – palAlaa

+0

La première ligne de l'appel ViewAllNotes est asynch. Traitez-le comme un appel ajax. Tout ce qui suit n'aura pas accès à cet état jusqu'à ce qu'il se termine. Il n'y a pas de guarunte quand il sera terminé - cela dépend du navigateur, de la requête db, etc. Votre meilleur pari est d'utiliser un modèle de promesse, un modèle mono-acteur, des événements ou pub/sub (observateur) pour indiquer le code restant quand le SQL est fini. – AutoSponge

+1

@Alaa une façon correcte de faire ceci est de passer une fonction de rappel dans ce 'ViewAllNotes' et votre fonction l'appelle. –