Tabulador: reformatear celda en el evento ‘cellEdited’.
Soy nuevo en el uso de Tabulator.js pero estoy dispuesto a aprender y utilizarlo a fondo. De hecho, estaba buscando una buena biblioteca de generación de tablas para un proyecto principal. Hasta ahora, parece ser bastante agradable.
Actualmente estoy usando un enlace CDN para la versión 5.0.7.
Ahora aquí está mi problema: intento dar formato a una celda con un background-color
dependiendo del valor de la celda (el nombre de la celda es “status” y el valor puede ser “true” o “false”). Funciona al crear la tabla. Pero no funciona si cambio el valor de la celda posteriormente.
He creado un método llamado statusFormatter
:
statusFormatter: (cell) => {
if (cell.getValue() == true) {
cell.getElement().style.backgroundColor = "#A6A6DF";
}
return cell.getValue();
},
Llamo a este método en el evento cellEdited
:
mainTable.on("cellEdited", function (cell) {
clientTabulator.statusFormatter(cell);
});
Supongo que hay algo mal con el retorno en el método. Pero no sé qué retornar cuando necesito el estilo.
Espero que alguien pueda ayudar…
davy.ai
Solución para dar formato a las celdas en Tabulator.js basado en el valor de la celda
Para dar formato a las celdas en Tabulator.js basado en el valor de la celda, puedes crear un método y llamarlo en el evento
cellEdited
. Si el color de fondo no cambia después de editar el valor de la celda, puede haber un problema con la declaraciónreturn
del método.En el fragmento de código proporcionado, el método
statusFormatter
establece el color de fondo de la celda en#A6A6DF
si el valor de la celda estrue
. Sin embargo, el método siempre devuelve el valor de la celda, lo cual puede no ser el comportamiento deseado. Para solucionar este problema, puedes modificar el método para que devuelva una cadena HTML con los estilos necesarios en lugar de solo el valor de la celda.Aquí tienes una implementación actualizada del método
statusFormatter
que devuelve una cadena HTML con el estilobackground-color
aplicado a la celda:En el código anterior,
value
es el valor actual de la celda ystyle
es la cadena de estilo CSS basada envalue
(es decir, sivalue
estrue
, elstyle
incluirá la propiedadbackground-color
con el color deseado). Luego, el método devuelve una cadena HTML que envuelvevalue
en un elementodiv
con el estilo aplicado.Finalmente, para aplicar
statusFormatter
a la celda, puedes llamar a este método en el eventocellEdited
:En el código anterior,
cell.getElement().innerHTML
se establece en la cadena HTML resultante declientTabulator.statusFormatter(cell)
después de que se edite una celda. Esto actualizará la apariencia de la celda en función del nuevo valor.