2016-02-26 33 views
2

我正在R RASH中使用rhandsontable,我想在第一列中使用“Sum”更改行的颜色。由于行数不固定,因此根据行号选择“总和”行不起作用。我试过附加的代码,但不幸的是它不工作。很多感谢您的帮助!rhandsontable更改特定行的背景

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

看起来像你有一个JavaScript错误。尝试,因为instance作为参数传递给你的渲染函数变化

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

instance.getData()[row][0] 

enter image description here

+0

非常感谢!解决了这个问题。其实,我认为我也尝试过。但是,现在它起作用了。非常感谢你。 – ChrisW