代码之家  ›  专栏  ›  技术社区  ›  Shree

R闪亮:在列背景色的顶部获取DT行背景色

  •  0
  • Shree  · 技术社区  · 6 年前

    我在用 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(c(4.7, 5), c("#fc8a8a", "#fc8a8a"))
              # comment above row and ucomment below row for row color using styleInterval()
              # backgroundColor = styleInterval(c(0, 5, 9), c('blue', 'green', 'red', 'orange'))
    
            )
        })
      }
    )
    

    结果(不正确) styleEqual() -

    Example with styleEqual

    StyleInterval() -

    Example with styleInterval

    寻找适用于多行和 样式相等() styleInterval()

    0 回复  |  直到 5 年前
        1
  •  1
  •   Stéphane Laurent    5 年前

    下面是一个解决方案:

    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")
        })
      }
    )