2011-08-08 5 views
2

Je mets à jour ma table en utilisant ajax, le processus ne soit pas lié aux datatables et je voudrais faire une table rafraîchirRafraîchissant datatables

$('#listing').dataTable({ 
     "bDestroy": true, 
      "bProcessing": true, 
    "sAjaxSource": "getlist/", 
      "bJQueryUI": true, 


      "aoColumns": [ 
        { "mDataProp": "id" },  
     { "mDataProp": "aname" },   
     { "mDataProp": "acode" }, 
     { "mDataProp": "editlink" }, 
        { "mDataProp": "deletelink" }, 

    ], 
      "aoColumnDefs": [ 
        { "bSearchable": false, "bVisible": false, "aTargets": [ 0 ] } 

    ] 



}); 

Mes données est personnalisé pour apparaître comme {"aaData":[{"id":"14", et son bien travailler parce que la table est en cours de rendu.

Répondre

0

Vous pouvez mettre à jour le datatable en appelant la méthode fnDraw(). Cependant, le datatables lira à nouveau les données de la source de données réelles (URI Ajax, dans votre cas) SEULEMENT si bServerSide: true est réglé (par lequel vous dites la datatables que tout le traitement se fait à côté du serveur).

Un effet secondaire de bServerSide: true est que vous devez envoyer les détails de (paginations de iTotalRecords & iTotalDisplayRecords, ..) & autres données dans la réponse Ajax (voir Server-side Processing docs).

effet secondaire Othre est que le filtrage ne fonctionne plus longtemps :(Datatable ne peut pas filtrer les données partielles dont il a

0

DataTables a une fonction fnReloadAjax dans l'API que vous pouvez coller dans votre script. fnReloadAjax Un mot de prudence cependant: si vous envisagez d'incorporer un rafraîchissement répétitif (ie la table se rafraîchit toutes les 10 secondes pour afficher les données "en direct").) la meilleure façon de le faire est d'identifier périodiquement les données modifiées de votre source AJAX (peut-être en comparant un horodatage "modifié" dans vos enregistrements) et en utilisant fnAddData pour ajouter/mettre à jour/supprimer uniquement ces lignes. Ce sera moins cher pour le client que de recharger l'intégralité du jeu de données à chaque fois.