2012-06-07 16 views
5

Estoy usando el plugin jQuery dataTables para crear tablas avanzadas para nuestra aplicación. Uno de los requisitos es tener filas "plegables" (no grupos): p. las filas representan las campañas y es posible que tengan campañas secundarias. La estructura de las filas secundarias es (en el caso básico) la misma que en la tabla principal: las mismas celdas, los mismos tipos de datos.jQuery tablas de datos agregan varias filas plegables usando la función de API fnOpen()

Pero las filas secundarias no deberían afectar a la tabla primaria: quiero decir, el número de filas por página debe permanecer igual, las filas secundarias no se deben ordenar por separado de la fila principal, siempre deben permanecer enlazadas . Por lo tanto, no puedo usar fnAddData() Func API para eso.

Y el otro requisito complicado es la posibilidad de tener filas de varios niveles plegables (por ejemplo, las campañas de niño para las campañas de los niños, etc.)

que estaba usando el fnOpen() la función API para que, permite para "abrir" cualquier fila, le agrega un bloque secundario y generalmente puede insertar allí lo que quiera. Se trabaja muy bien en tablas de datos 1.8.2, he utilizado un código como éste para generar filas secundarias:

$(childRowData).each(function(){ 
    row = $(oTable.fnOpen(row.get(0), $(this), "child_row")); 
    $(row).addClass('child_row'); 
}); 

En general, se "abre" la fila actual (definido anteriormente), los datos insertados en la fila secundaria, a continuación, en el ciclo "se abrió" la fila secundaria, se le agregó un elemento secundario, etc.

Pero desde dataTables 1.9.0 parece que solo se permite "abrir" las filas principales, y solo hacerlo una vez.

Por supuesto, puedo crear una sub-tabla, aplique $ .dataTable() a él e introducirlo a la fila secundaria, pero parece que una solución un tanto cojo y costoso, especialmente cuando podríamos tener 3 -4 niveles de profundidad.

¿Hay alguna otra manera de implementar filas plegables en dataTables?

+0

Parece que no hay manera de hacerlo sin modificar el código de dataTables. No queremos hacer esto, así que tuve que ir con las tablas anidadas. –

Respuesta

0

Cuando crea la fila secundaria que tiene secundarios, es mejor que saque su propia solución ... Estuve haciendo algunas cosas similares a esto hace unas semanas con datatables y eso fue lo mejor que pude hacer. .

6

tablas de datos se ha actualizado alguna manera y es muy sencillo ahora para la adición de los niños filas de filas primarias: http://datatables.net/reference/api/row().child()

Una de las cosas no es realmente obvio, es en caso de que desee utilizar la misma configuración para sus hijos filas al igual que para las filas primarias, debe usar el selector de jquery, para pasar un nodo en lugar de una cadena (escrito en la documentación, pero lo omití la primera vez).

Doint que es correcta:

.child(
    $(
     '<tr>'+ 
      '<td>'+rowIdx+'.1</td>'+ 
      '<td>'+rowIdx+'.2</td>'+ 
      '<td>'+rowIdx+'.3</td>'+ 
      '<td>'+rowIdx+'.4</td>' 
     '</tr>' 
    ) 
) 

pero haciendo lo que es malo: (va a insertar el "tr" en un "td" con un colspan del tamaño de la tabla y es obvio que va a romper el alineación de columnas)

.child(
    '<tr>'+ 
     '<td>'+rowIdx+'.1</td>'+ 
     '<td>'+rowIdx+'.2</td>'+ 
     '<td>'+rowIdx+'.3</td>'+ 
     '<td>'+rowIdx+'.4</td>' 
    '</tr>' 
) 
+0

Has salvado una vida hoy. Muchas gracias –

Cuestiones relacionadas