如何在Shiny应用中禁用DataTable行点击高亮效果
禁用Shiny DataTable行点击后的蓝色高亮效果
要禁用DataTable行点击后的蓝色高亮,你需要通过自定义CSS覆盖DT最新版本中用来实现选中效果的box-shadow属性,直接在Shiny的UI中添加样式规则即可:
在
fluidPage内插入tags$style标签,针对选中行的样式进行重置:.datatable .table.dataTable tbody tr.selected { box-shadow: none !important; background-color: inherit !important; }box-shadow: none移除选中行默认的蓝色阴影边框background-color: inherit让选中行背景色和普通行保持一致(也可替换为具体颜色值,比如#ffffff)
修改后的完整可运行代码如下:
library(ggplot2) library(shiny) library(DT) ui <- fluidPage( titlePanel("Basic DataTable"), # 自定义CSS禁用选中高亮 tags$style(HTML(" .datatable .table.dataTable tbody tr.selected { box-shadow: none !important; background-color: inherit !important; } ")), fluidRow( column(4, selectInput("man", "Manufacturer:", c("All", unique(as.character(mpg$manufacturer)))) ), column(4, selectInput("trans", "Transmission:", c("All", unique(as.character(mpg$trans)))) ), column(4, selectInput("cyl", "Cylinders:", c("All", unique(as.character(mpg$cyl)))) ) ), DT::dataTableOutput("table") ) server <- function(input, output) { output$table <- DT::renderDataTable(DT::datatable({ data <- mpg if (input$man != "All") { data <- data[data$manufacturer == input$man,] } if (input$cyl != "All") { data <- data[data$cyl == input$cyl,] } if (input$trans != "All") { data <- data[data$trans == input$trans,] } data })) } shinyApp(ui = ui, server = server)
说明:最新版本的DT不再仅依赖背景色实现选中高亮,而是通过box-shadow添加了蓝色边框效果,因此需要同时重置这两个属性才能完全禁用高亮。!important用于确保自定义样式优先级高于DT的默认样式。
内容的提问来源于stack exchange,提问作者TobKel
相关产品推荐
相关产品推荐

