rhandsontable更改特定行的背景

时间:2016-02-26 22:18:21

标签: r shiny handsontable

我在R shine中使用rhandsontable,我想在第一列中用“Sum”更改行的颜色。由于行数不固定,因此根据行号选择“Sum”行不起作用。我已经尝试了附加的代码,遗憾的是它不起作用。非常感谢你的帮助!

library(shiny)
library(rhandsontable)
runApp(list(server=
  shinyServer(function(input, output, session) {

     CF_amt <- as.data.frame(matrix(0.0, nrow=5, ncol=10));
     CF_type <- data.frame(source = c("Row1","Row2","Row3","Row4","Sum"),
                            stringsAsFactors = FALSE);
     CF_names <- c("source","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10");
     CF_tbl <- cbind(CF_type,CF_amt);

     values <- reactiveValues(data = CF_tbl)

     output$table <- renderRHandsontable({ 
       rhandsontable(values$data,rowHeaders = NULL,colHeaders=CF_names) %>% 
         hot_cols(fixedColumnsLeft = 1, renderer = "
             function (instance, td, row, col, prop, value, cellProperties) {
               Handsontable.renderers.TextRenderer.apply(this, arguments);
               if (col == 0) {
                td.style.background = '#F0F0F0';
               }
               else if(this.instance.getData()[row][0] == 'Sum'){
                td.style.background = '#F00000';
               }
            }"
       ) 
    })
  })
,ui=
  shinyUI(navbarPage("Test",
    tabPanel("HOT",
       fluidPage(fluidRow(
         column(12,rHandsontableOutput("table"))
      ))
   )
  ))
))

1 个答案:

答案 0 :(得分:4)

看起来你有一个javascript错误。尝试更改

this.instance.getData()[row][0]

instance.getData()[row][0]

因为instance作为参数传递给渲染函数。

enter image description here