R闪亮的DataTable选定行颜色

8e2ybdfx  于 2023-05-11  发布在  其他
关注(0)|答案(2)|浏览(154)

我正在尝试在我的闪亮应用程序中为DataTable中的选定行设置高亮颜色。基本上,我希望选定行的颜色是红色而不是蓝色。然而,我对JavaScript一点也不熟悉,所以我很难编写适当的回调(至少我认为这是问题所在)。以下是我到目前为止所尝试的:

# ui.R
library(shiny)

fluidPage(
  title = 'DataTables Test',
  DT::dataTableOutput('table')
)

# server.R
library(shiny)
library(DT)

# render the table
output$table = renderDataTable(datatable(head(iris, 20), 
options = list(
    initComplete = JS(
      "function(settings, json) {",
      "var rows = $(this.api().table().rows());",
      "for (var i = 0; i < rows.length; i++){ ",
      "var row = rows[i];",
      "row.css({'background-color': '#000', 'color': '#f00'})",
      "}",
      "}")
  )))

})

正如你所看到的,到目前为止,我只是试图找出如何改变行的颜色。一旦我弄清楚了这一点,我将尝试将CSS更改为:

"tr.selected td, table.dataTable td.selected { background-color: #f00}"

但我还没有达到这一点--不幸的是,上面的代码对背景颜色没有任何影响。如果有人能帮我解决整个问题,那就太好了。

gupuwyp2

gupuwyp21#

这应该做的工作:

#rm(list = ls())
library(shiny)
library(DT)

ui <- basicPage(
  tags$style(HTML('table.dataTable tr.selected td, table.dataTable td.selected {background-color: pink !important;}')),
  mainPanel(DT::dataTableOutput('mytable'))
)

server <- function(input, output,session) {

  output$mytable = DT::renderDataTable(    
    datatable(mtcars)
  ) 
}
runApp(list(ui = ui, server = server))

5vf7fwbs

5vf7fwbs2#

如果有人遇到和我一样的问题:如果你在datatable中使用'bootstrap'样式,你需要将“.selected”更改为“.active”,否则它将无法工作。例如,在Pig排提供的答案中:

library(shiny)
library(DT)

ui <- basicPage(
  tags$style(HTML('table.dataTable tr.active td, table.dataTable tr.active {background-color: pink !important;}')),
  mainPanel(DT::dataTableOutput('mytable'))
)    

server <- function(input, output,session) {
  output$mytable = DT::renderDataTable(    
    datatable(mtcars, style="bootstrap")
  ) 
}

runApp(list(ui = ui, server = server))

相关问题