Случайное изменение фона конкретной строки

Я использую Rhandsontable в R блестящий, и я хотел бы изменить цвет строки с "Сумма" в первом столбце. Поскольку количество строк не фиксировано, выбор строки "Сумма" на основе номера строки не работает. Я попробовал приложенный код, который, к сожалению, не работает. Большое спасибо за вашу помощь!

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. Попробуйте изменить

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

в

instance.getData()[row][0]

так как instance передается в качестве параметра вашей функции рендеринга.

введите описание изображения здесь

Другие вопросы по тегам