2017-07-07 6 views
1

Ich versuche, die Hervorhebungsfarbe für eine ausgewählte Zeile in einer DataTable in meiner glänzenden App festzulegen. Grundsätzlich möchte ich, dass die Farbe der ausgewählten Zeilen eher rot als blau ist. Allerdings bin ich überhaupt nicht mit JavaScript vertraut, daher habe ich Schwierigkeiten, den entsprechenden Rückruf zu schreiben (zumindest denke ich, dass das das Problem ist). Hier ist, was ich versucht habe, so weit:R Shiny DataTable ausgewählte Zeilenfarbe

# 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'})", 
     "}", 
     "}") 
))) 

}) 

Wie Sie sehen können, so weit ich nur versuche, herauszufinden, wie die Zeilenfarben zu ändern. Nachdem ich das herausgefunden hatte, wollte ich die CSS zu so etwas wie zu versuchen und zu ändern:

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

Aber ich habe es noch nicht bekommen - leider oberhalb der Code tut nichts, um die Hintergrundfarbe. Wenn mir jemand mit der ganzen Lösung helfen könnte, wäre das toll.

+0

Die 'DT' Paket hat einige eingebaute Funktionen zur Schriftfarben Farben/Hintergrund zu ändern. Siehe [hier] (https://rstudio.github.io/DT/010-style.html) –

+0

@GregordeCillia Ich habe mir diese angesehen, aber ich konnte nicht herausfinden, wie man eine Zeile basierend darauf, ob es ausgewählt wurde oder nicht. –

+0

Sie können ein 'dataTableProxy' verwenden und das Styling aktualisieren, wenn' input $ table_rows_selected' sich ändert –

Antwort

3

Dies sollte die Arbeit machen:

#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

Vielen Dank! Es hat perfekt funktioniert. –

+0

Glücklich zu helfen .. –

+1

Vielen Dank für das oben genannte, half mir mit einem ähnlichen Problem. Um verschiedene Farben für ausgewählte Zeilen und Spalten festzulegen, verwenden Sie: $ tags $ style (HTML ('table.dataTable tr.selected td {Hintergrundfarbe: pink! Wichtig;}')), Tags $ style (HTML ('table .dataTable td.selected {Hintergrundfarbe: orange! wichtig;} ')) ' – Hester