R闪亮:将DT行背景色放在列背景色之上

时间:2018-10-26 19:03:31

标签: css r shiny dt

我正在一个闪亮的应用程序中使用DT::renderDT,并且正在格式化某些列和行的背景色。我需要将行背景色置于列背景色之上。我尝试了formatStyle的切换顺序,但是没有用。这是一个小例子-

library(shiny)
library(DT)

shinyApp(
  ui = fluidPage(
    DTOutput("table")
  ),
  server = function(input, output, session) {    
    output$table <- renderDT({
      head(iris) %>%
        datatable() %>%
        formatStyle(c(2,4), backgroundColor = "#fcf4d9") %>%
        formatStyle(1, target = 'row', backgroundColor = styleEqual(4.7, "#fc8a8a"))
    })
  }
)

enter image description here

红色必须在黄色上方。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个解决方案:

rowCallback <- c(
  "function(row, data, displayNum, displayIndex, dataIndex){",
  "  if(data[1] === 4.7){",
  "    $(row).find('td').addClass('red');",
  "  }",
  "}"
)

shinyApp(
  ui = fluidPage(
    tags$head(
      tags$style(
        HTML(
          "table.dataTable tbody tr td.red {background-color: #fc8a8a !important}"
        )
      )
    ),
    DTOutput("table")
  ),
  server = function(input, output, session) {    
    output$table <- renderDT({
      head(iris) %>%
        datatable(options = list(rowCallback = JS(rowCallback))) %>%
        formatStyle(c(2,4), backgroundColor = "#fcf4d9")
    })
  }
)