2009-12-17 37 views
6

He probado esto y la razón por la que hice la pregunta es porque parece estar haciendo cosas diferentes para diferentes tablas.Al usar el complemento jQuery DataTables, ¿agrega fnAddData() filas al principio o al final de una tabla html?

No pude encontrar ninguna documentación sobre si esto es configurable o no. Hubiera pensado que agregaría las filas al fondo, pero tengo algunos ejemplos donde lo veo agregando filas en la parte superior o incluso en el medio a veces. Parece bastante aleatorio.

¿Alguna idea?

Respuesta

12

He revisado el código fuente y fnAddData llama al método interno _fnAddData, que agrega una fila y, si tiene éxito, devuelve su índice en la tabla. _fnAddData agrega la nueva fila en la parte inferior (el índice de la nueva fila es igual al número de filas en la tabla).

Sin embargo, fnAddData tiene un parámetro opcional para volver a dibujar la tabla teniendo en cuenta las diversas características que están habilitadas. Este parámetro se establece como verdadero y esto es lo que probablemente causa el comportamiento 'aleatorio'.

5

Navegando a través de la fuente de Datatable, como se explica en kgiannakaki. El método agregará todas las nuevas filas de datos al final de la tabla como debería.

El motivo del comportamiento "aleatorio" es que cada vez que se agrega una nueva fila, el método realizará un "redibujado" de la tabla completa a menos que se especifique lo contrario. Cuando esto ocurre, la tabla se ejecuta a través de múltiples funciones como filtrado/clasificación, etc., etc., y se reescribe completamente en la página. Básicamente, voy a adivinar que estás agregando bits de datos aleatorios en nuevas filas que pueden estar creando el efecto "aleatorio" cada vez que se agrega una nueva fila.

Puede desactivar fácilmente el redibujado de tabla agregando un segundo parámetro en la llamada fnAddData que debe establecerse en falso.

$(this).fnAddData(data, false); 

Si este problema persiste, me gustaría presentar una falla para este problema, ya que no hay otra razón para este comportamiento.

4

Para desactivar la clasificación, por lo que una nueva fila se añadirá a la parte inferior de una mesa, añadir

"bSort": false 

a (la parte superior de) su inicialización DataTable.

Cuestiones relacionadas