Centrar contenido de columnas dinámicamente con DataTables

publicado por: Anonymous

Intento centrar n cantidad de columnas en una tabla que tiene DataTables recibiendo el parámetro dinámicamente pero no funciona.

He probado con el siguiente código, pero necesito que el valor sea dinámico, y que las columnas se centren desde la última hasta la primera según el número que mande:

function makerDatatable(number){
   $('#myTable').dataTable({
      "columnDefs": [
        {"className": "text-center", "targets": number}
      ]
   }
}

Solo se centra la columna con el número específico que recibe.

solución

La documentación de DataTables no es tan clara y por lo general se encuentra desactualizada, hace poco tuve el mismo requerimiento y el proceso fue el siguiente:

function doDataTable(tableId, rows, colsToCenter=2) {
    colsToBeCentered = [];
    for(i=1; i <= colsToCenter; i++){ //Hacemos un contador sobre el número recibido
        colsToBeCentered.push($(tableId + " th").length - i); //Por cada número tomamos la columna correspondiente, contando desde el final
    }
    $(tableId).DataTable({
        data: rows,
        lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
        pageLength: 25,
        columnDefs: [{ //Centro el contenido de las n últimas columnas
            className: "text-center", "targets": colsToBeCentered
        }],
        hideEmptyCols: true,
        destroy: true
    });
}

Por defecto la función va a centrar las últimas dos columnas si no se recibe ingún parámetro, en caso contrario centra la cantidad indicada.

Ojalá sea lo que buscas.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *