¿Cómo cambiar el color de algunas filas con rhansontable y checkbox?
Quiero cambiar el color de toda la fila cuando el usuario desmarca una casilla de verificación presente en una de las celdas. (Podría haber varias filas)
Hasta ahora solo puedo cambiar el color de la celda que contiene la casilla de verificación en lugar de toda la fila. En este ejemplo, toda la fila 6 debería colorearse.
biblioteca (resplandor)
biblioteca (rhandsontable)
Defina la interfaz de usuario para la aplicación que dibuja un histograma
ui <- fluidPage (
rHandsontableOutput (& # 39; table & # 39;)
)
Defina la lógica del servidor requerida para dibujar un histograma
servidor <- función (entrada, salida) {
df <- data.frame (alfabeto = letras [1:10],
incluir = VERDADERO)
la salida $ table <- renderRHandsontable ({
rhandsontable (df, altura = 500)%>%
hot_col (col = & quot; incluir & quot ;,
renderer = & quot;
función (instancia, td, fila, col, prop, valor, Propiedades de celda) {
Handsontable.renderers.CheckboxRenderer.apply (esto, argumentos);
var col_value = instancia.getData () [row] [1]
if (col_value === false) {
td.style.background = & # 39; rosa & # 39 ;;
}
}
& quot;)
})
}
Ejecute la aplicación
shinyApp (ui = ui, servidor = servidor)
davy.ai
Para cambiar el color de toda la fila cuando el usuario desmarca una casilla de verificación presente en una de las celdas, podemos modificar la función
renderer
para la columnainclude
en el objetorhandsontable
.En lugar de simplemente cambiar el color de fondo de la celda, también podemos usar JavaScript para obtener el índice de fila de la celda y luego aplicar el color de fondo a todas las celdas en esa fila.
Así es cómo podemos modificar el código para lograr esto:
En la función
renderer
modificada, primero llamamos aCheckboxRenderer
para renderizar la casilla de verificación en la celda. Luego, recuperamos el valor de la columnainclude
para la fila actual usandoinstance.getDataAtCell(row, 1)
. Si el valor esfalse
, recuperamos todos los elementos secundarios (celdas) de la fila usandoinstance.getRowRenderer(row).children
y cambiamos su color de fondo a rosa utilizando un ciclofor
.Con esta modificación, cuando el usuario desmarca la casilla de verificación en cualquier celda, todas las celdas en la fila correspondiente se colorearán de rosa.