简体   繁体   English

在rhansontable中基于单元格值的颜色行

[英]color row based on cell value in rhandsontable

I am struggling to color full row of rhandsontable in my shiny app based on a cell value. 我正在根据单元格值在我闪亮的应用程序中为整行的rhandsontable上色。

In the following example, I would like to format full row instead of one cell. 在下面的示例中,我想格式化整行而不是一个单元格。

library(rhandsontable)

DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10],
                small = letters[1:10],
                dt = seq(from = Sys.Date(), by = "days", length.out = 10),
                stringsAsFactors = FALSE)

col_highlight = 2
row_highlight = c(5, 7)

rhandsontable(DF, width = 550, height = 300) %>%
  hot_cols(renderer = "
               function (instance, td, row, col, prop, value, cellProperties) {
               Handsontable.renderers.TextRenderer.apply(this, arguments);

               if(value == 'F' | value == 'f') {
               td.style.background = 'pink';
               } else if(value == 'J' | value == 'j') {
               td.style.background = 'lightgreen';
               } else if(value == 'X' | value == 'x') {
               td.style.background = 'lightblue'}

               }")

The idea of renderer is that applied to all cells separately, so at the same time cell value can't be a 'F' and 'f'. 渲染器的思想是将其分别应用于所有单元格,因此单元格值不能同时为'F'和'f'。 For every row you have to select column 2 to check if value is 'F' and select column 3 to check if value is 'f'. 对于每一行,您必须选择第2列以检查值是否为'F',并选择第3列以检查值是否为'f'。

rhandsontable(DF, width = 550, height = 300) %>%
hot_cols(renderer = "
           function (instance, td, row, col, prop, value, cellProperties) {
           Handsontable.renderers.TextRenderer.apply(this, arguments);

           if(instance.getData()[row][2] == 'F' | instance.getData()[row][3] == 'f'){
                td.style.background = 'pink';
           } else if(instance.getData()[row][2] == 'J' | instance.getData()[row][3] == 'j') {
                td.style.background = 'lightgreen';
           } else if(instance.getData()[row][2] == 'X' | instance.getData()[row][3] == 'x') {
                td.style.background = 'lightblue'
           }
        }")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM