2012-03-02 2 views
21

J'utilise une fonction 'fnDrawCallback' pour le changement de page. Cela résout essentiellement mon but. La seule chose est que je dois spécifier cette fonction quand j'initialise l'objet dataTable. Est-ce que je peux le faire après l'initialisation?Page de rappel de changement de page de données

Par exemple: que je fais comme ceci:

$("#tableID").dataTables({'fnDrawCallBack':functionName}); 

Je veux faire comme ceci:

var oTable = $("#tableID").dataTables(); 
oTable.fnDrawCallback = functionName; // or something like this 

Solution:

oTable.aoDrawCallback.push(functionObj); 
var functionObj = { 
    fn: funtionName 
}; 
+0

Je veux savoir s'il existe un moyen de spécifier cette fonction après l'initialisation de l'objet dataTable. – emphaticsunshine

+0

Puis-je spécifier l'événement AJAX pageLoad après l'initialisation ?? – emphaticsunshine

+0

http://stackoverflow.com/questions/7407111/detect-page-change-on-datatable – trante

Répondre

19

Vous pouvez accéder aux paramètres de données internes de DataTables pour manipuler le tableau de rappel draw (aoDrawCallback, pas fnDrawCallback en interne - c'est un tableau puisqu'il peut y avoir plusieurs rappels), ou (et ce que je suggère) vous pouvez ajouter 'écouteur d'événement:

var oTable = $("#tableID").dataTables(); 
$(oTable).bind('draw', functionName); 

les événements déclenchés par DataTables sont documentés ici: http://datatables.net/docs/DataTables/1.9.0/#summary_events

+0

Les événements de liaison ne fonctionnent pas dans la version de dataTables que j'utilise. Mais merci pour une bonne suggestion. – emphaticsunshine

+0

aoDrawCallback a travaillé pour moi. Je dois pousser un objet dans ce tableau et votre fonction devrait être une propriété fn de cette fonction. – emphaticsunshine

+0

Les événements de liaison $ (oTable) .bind() semblent fonctionner avec les versions plus récentes 1.9.2+. – jjwdesign

5

SI vous avez une version supérieure à 1,8, vous pouvez l'utiliser pour frapper les événements de changement de page:

$('#myTable').on('page', function() {...}); 

Espérons que cela aide!

+1

Merci, il travaille +1 pour vous. –

+0

@NikhilAgrawal merci! Heureux que ça a aidé! – streetlight

+0

Dans mon cas, j'ai utilisé "page.dt" mais cela ne fonctionne que sur ma troisième page pour une raison quelconque. –

1

Au lieu de deux appels distincts, ajoutez simplement un .bind() avant la .dataTable(), comme suit qui exécute une fonction setMouseDown chaque fois qu'un changement de page se produit (y compris pour la première page):

$('#myTable') 
    .bind('page', setMouseDown()) 
    .dataTable( 
    { 
     bJQueryUI: true, 
     ... Other Init Stuff Here ... 
    }); 
Questions connexes