2017-07-07 148 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