2012-03-02 13 views
21

Estoy usando la función 'fnDrawCallback' para el cambio de página. Básicamente resuelve mi propósito. Lo único es que debo especificar esa función cuando estoy inicializando el objeto dataTable. ¿Hay alguna forma de que pueda hacerlo después de la inicialización?Llamada de cambio de página de tablas de datos

Por ejemplo: que estoy haciendo de esta manera:

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

quiero hacer la siguiente manera:

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

Solución:

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

Quiero saber si hay alguna manera de especificar esa función después de inicializar el objeto dataTable. – emphaticsunshine

+0

¿Puedo especificar el evento AJAX pageLoad después de la inicialización? – emphaticsunshine

+0

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

Respuesta

19

Puede acceder a la configuración de datos internos de DataTables para manipular la matriz de devolución de llamadas (aoDrawCallback, no fnDrawCallback internamente - es una matriz ya que puede haber varias devoluciones de llamadas), o (y lo que sugiero) puede agregar un 'sorteo 'detector de eventos:

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

los eventos disparados por tablas de datos están documentados aquí: http://datatables.net/docs/DataTables/1.9.0/#summary_events

+0

La vinculación de eventos no funciona en la versión de tablas de datos que estoy usando. Pero gracias por una buena sugerencia. – emphaticsunshine

+0

aoDrawCallback funcionó para mí. Tengo que empujar un objeto en esa matriz y su función debe ser una propiedad fn de esa función. – emphaticsunshine

+0

Eventos vinculantes $ (oTable) .bind() parece funcionar con las versiones más recientes 1.9.2+. – jjwdesign

5

si tiene una versión superior a 1,8, se puede usar esto para golpear a los eventos de cambio de página:

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

Espero que esto ayude!

+1

Gracias, está trabajando +1 para usted. –

+0

@NikhilAgrawal gracias! Me alegro de que ayudó! – streetlight

+0

En mi caso, utilicé "page.dt" pero esto solo funciona en mi tercera página por algún motivo. –

1

En lugar de dos llamadas separadas, basta con añadir una .bind() antes de la .dataTable(), tal como la siguiente que se ejecuta una función setMouseDown siempre que un cambio de página se produce (incluyendo la prestación de la primera página):

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