2010-09-20 8 views
2

je un tableau figurant comme:datatables jquery mise à jour une cellule

<table id="myTable"> 
    <thead> 
    <tr> 
     <td><input type="checkbox" id="selectall" /></td> 
     <td>Column 1</td> 
     <td>Column 2</td> 
     <td>Column 3</td> 
     <td>Column 4</td> 
     <td>Column 5</td> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

Ensuite, le javascript:

var myTable = jQuery('#myTable').dataTable({ 
    /* options */ 
}); 

// Ajax request to populate: 
jQuery.get('script.php', function(data){ 
    eval("rows="+data); 
    for(var i=0;i<rows.length;i++){ 
     myTable.fnAddData([ 
      "<input type=\"checkbox\" id=\""+rows[i].uniqueID+"\" />", 
      rows[i].col1Txt, 
      rows[i].col2Txt, 
      rows[i].col3Txt, 
      rows[i].col4Txt, 
      rows[i].col5Txt ]); 
    } 
}); 

Maintenant, je vais avoir des problèmes avec la mise à jour de la table sur la base duquel les cases sont sélectionné:

J'essaye de mettre à jour la 5ème cellule dans chaque rangée qui est vérifiée. J'utilise une combinaison de fnUpdate et fnGetPosition (http://www.datatables.net/api).

fnGetPosition attend l'élément td ou tr, donc je pensais que je venais prends le parent td des cases à cocher:

var checkBoxes = jQuery('td > input:checked', myTable); 
for(var i=0;i<checkBoxes.length;i++){ 
    var parentTD = jQuery('#'+checkBoxes[i].id).parent(); //seems wrong? 
    var pos = myTable.fnGetPosition(parentTD); 
    //alert(pos[0]); 
    myTable.fnUpdate('Updated text', pos[0], 5); 
} 

Mais je dois faire parentTD mal depuis pos ne semble jamais tenir une valeur.

Des idées?

Répondre

7

Vous pouvez utiliser la fonction each pour parcourir un objet jQuery, c'est plus facile que d'utiliser la boucle for.

Aussi, je pense que vous pouvez opter pour votre sélecteur pour obtenir les éléments td au lieu d'obtenir les entrées vérifiées.

Il sera beaucoup plus performant car il devrait supprimer 2 sélecteurs dans chaque opération. Je ne l'ai pas essayé, mais quelque chose comme ça devrait fonctionner

+0

Nice, qui a fonctionné. J'étais conscient de chaque(), je ne pouvais tout simplement pas rassembler mes connaissances limitées en jQuery pour attraper tous ces tds. Merci beaucoup. – tombh

+0

@tombh: pas de problème, content de pouvoir aider. – DannyLane

+0

Comment est-ce maintenant avec la nouvelle API? –

Questions connexes