2012-03-02 9 views
21

Sto utilizzando una funzione 'fnDrawCallback' per cambio pagina. Fondamentalmente risolve il mio scopo. L'unica cosa è che devo specificare quella funzione quando sto inizializzando l'oggetto dataTable. C'è un modo per farlo dopo l'inizializzazione?Callback modifica pagina dati

Per esempio: sto facendo in questo modo:

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

che voglio fare in questo modo:

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

Soluzione:

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

Voglio sapere se esiste un modo per specificare la funzione dopo l'inizializzazione dell'oggetto DataTable. – emphaticsunshine

+0

Posso specificare l'evento AJAX pageLoad dopo l'inizializzazione ?? – emphaticsunshine

+0

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

risposta

19

È possibile accedere alle impostazioni dei dati interni di DataTables per manipolare l'array callback draw (aoDrawCallback, non fnDrawCallback internamente - è un array poiché possono esserci più callback) o (e cosa suggerirei) è possibile aggiungere un 'draw' 'listener di eventi:

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

gli eventi generati da DataTable sono documentati qui: http://datatables.net/docs/DataTables/1.9.0/#summary_events

+0

Gli eventi di binding non funzionano nella versione di dataTables che sto utilizzando. Ma grazie per un buon suggerimento. – emphaticsunshine

+0

aoDrawCallback ha funzionato per me. Devo spingere un oggetto in quell'array e la tua funzione dovrebbe essere una proprietà fn di quella funzione. – emphaticsunshine

+0

Gli eventi di binding $ (oTable) .bind() sembrano funzionare con le versioni più recenti 1.9.2+. – jjwdesign

5

se avete una versione superiore alla 1.8, è possibile utilizzare questo per colpire gli eventi di modifica pagina:

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

Spero che questo aiuti!

+1

Grazie per averlo fatto +1. –

+0

@NikhilAgrawal grazie! Sono contento che ci abbia aiutato! – streetlight

+0

Nel mio caso, ho usato "page.dt" ma questo funziona solo sulla mia terza pagina per qualche motivo. –

1

Piuttosto che due chiamate separate, basta aggiungere un .bind() prima della .dataTable(), come ad esempio il seguito che esegue una funzione setMouseDown ogni volta che si verifica un cambio pagina (oltre a rendere il prima pagina):

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