Para que la tabla sea adaptativa además de los archivos señalados más arriba debo agregar:
responsive: true, y la tabla debe tener style="width:100%"
Cuando las columnas ya no entren (se estrechan primero sea adaptativa o no) aparece una
flechita horizontal que al clicar hace aparecer debajo la data que falta.
IMPORTANTE: No es compatible con columnas render (punto 7) ver los dos ejemplos abajo.
2) N° de items en el menú de registros
Para cambiar el default va: lengthMenu: [[2, 4, 25, -1],[2, 4, 25, 'Todos']],
el primer array indica el N° de registros mostrados (-1 es todos) el 2° es optativo y son
las etiquetas que muestra el desplegable.
Para que el desplegable aparezca en un número que no sea el primero (default) pageLength: xx, donde
xx es uno de los valores del array lengthMenu.
3) Cambiar el idioma (a español en particular)
Para cambiar el idioma va: language: {url: '../scripts/es-ES.json',},
donde el archivo .json contiene todas las variables y su traducción. La ventaja de descargarlo y
no usar el cdn es que podemos modificarlo a gusto.
Para ver detalles del plug-in:
Click aquí
4) Manejo del layout (posición de info, buscador, paginado y N° de registros)
Los detalles de la grilla DOM y los valores en
VER GRILLA
Los valores por default de Layout son:
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info'
bottomEnd: 'paging'
Si queremos sobreescribir una posición la anterior desaparece (por ejemplo paginar
arriba derecha además de abajo) ponemos topEnd: { paging: {numbers: 6}},
y para dejar solo 5 N° en el paginado inferior bottomEnd: {paging: {numbers: 6}},
(recordar que con 6 aparecerá 1 2 3 4 ... 10) por ejemplo, cuenta "..." y el "último".
5) Ordenar las columnas
Para controlar si todas las columnas van a poder ordenarse (con el iconito de triangulitos) se
controla con ordering: true, false no se ordena ninguna, true todas.
para deshabilitar el orden de algunas columnas usamos
columnDefs: [{ targets: 4, orderable: false }], esto hará que la 5° columna
(la numeración empieza en cero) no sea ordenable.
Por default se ordena por la columna 0 para forzar el orden por otra columna va por ejemplo:
order: [[1, "asc"]] se ordenará por la clolumna 1 ascendente, para ordenar por varias
order: [[1, "asc"],[3, "desc"]] se ordena primero por la 1 ascendente y luego la 3 descendente.
6) Estilos en las columnas (font-size, color, etc.)
Por css definimos las clases con las propiedades que queremos en las columnas (El nombre de las
mismas tomará el estilo correspondiente a la columna si modidicamos con ) luego en columnDefs:
Para todas las columnas: {targets: '_all',className: 'todos'},
Para una en particular (sin encabezado): {targets: '0',className: 'primera'},
Para una en particular (con encabezado): va en columns {data: 'fecha_nac',className: 'todos primera'}
Aclaración: en el último caso van las dos clases separadas por un espacio para que se
apliquen ambas secuencialmente, al poner una clase en columns elimina todas las puestas en columnDefs.
7) Ancho y visibilidad de las columnas (Width)
Si no se explicita el ancho está dado por el contenido. si queremos forzar los anchoa manualmente debe ir en la
parte general autoWidth: false, y luego en cada columna de columnDefs: el ancho
como % width: 'xx%' asegurando que quede en total 100%.
Si necesitamos una columna no visible en columnDefs: le ponemos visible:false, ojo
en thead debe ir un <th> por cada columna no visible en el lugar correspondiente a la definición de campos en
columns: ( que es por supuesto el N° de orden en columnDefs.)
7) Campos que no provienen de la base de datos (Íconos, botones, inputs)
Los campos a agregar pueden ser cualquier objeto html en el formato:
{"render": function () {
return " OBJETO HTML"
}},