2017-07-07 150 views
1

我想在我的闪亮应用程序中的DataTable中选定的行设置高亮颜色。基本上我希望所选行的颜色是红色而不是蓝色。不过,我对JavaScript并不熟悉,所以我正在努力编写适当的回调(至少我认为这是问题)。这是我迄今为止所尝试的:R Shiny DataTable选择的行颜色

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

但我还没有到达那里,但 - 不幸的是上面的代码没有做任何的背景色。如果任何人都可以帮助我解决这个问题,那就太好了。

+0

的'DT'包有内建的功能,改变字体颜色/背景颜色。见[这里](https://rstudio.github.io/DT/010-style.html) –

+0

@GregordeCillia我已经看过那些,但我无法弄清楚如何根据是否选择颜色行或不。 –

+0

只要'input $ table_rows_selected'发生变化,您就可以使用'dataTableProxy'并更新样式 –

回答

3

这应该做的工作:

#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)) 

enter image description here

+0

非常感谢!它工作完美。 –

+0

乐意帮忙.. –

+1

非常感谢上述,它帮助我解决了类似的问题。要为所选行和列设置不同的颜色,请使用:'tags $ style(HTML('table.dataTable tr.selected td {background-color:pink!important;}')), tags $ style(HTML .dataTable td.selected {background-color:orange!important;}'))' – Hester