如何在R Shiny中借助rhandsontable复选框修改指定行背景色
实现方案
你之前的代码仅给include复选框列绑定了自定义渲染逻辑,所以只有该列单元格会触发样式修改。要实现整行变色,把自定义渲染逻辑作用到所有列,判断当前行的include列值后统一设置单元格背景色即可。
修改后的可运行代码如下:
library(shiny) library(rhandsontable) ui <- fluidPage( rHandsontableOutput('table') ) server <- function(input, output) { df <- data.frame(alphabet = letters[1:10], include = TRUE) output$table <- rhandsontable::renderRHandsontable({ rhandsontable(df, height = 500) %>% # 给所有列绑定全局渲染逻辑 hot_cols(renderer = " function (instance, td, row, col, prop, value, cellProperties) { // 列对应渲染器:复选框列调用CheckboxRenderer,普通列调用TextRenderer if (col == 1) { Handsontable.renderers.CheckboxRenderer.apply(this, arguments); } else { Handsontable.renderers.TextRenderer.apply(this, arguments); } // 取当前行include列的勾选状态 var include_val = instance.getData()[row][1] if (include_val === false) { td.style.background = 'pink'; } } ") %>% # 指定include列为复选框类型,保证交互逻辑正常 hot_col(col = "include", type = "checkbox") }) } shinyApp(ui = ui, server = server)
内容的提问来源于stack exchange,提问作者CodingBiology
相关产品推荐
相关产品推荐

