我正在尝试从 {shinydashboard} 切换到 {bslib} 作为我的 {shiny} 应用程序的 UI 工具包。 但我在使用 {bslib} 呈现 {DT} 表的方式时遇到了一些麻烦。
有没有办法阻止{bslib}改变{DT}表格式样式??
这是一个最小的例子:
代码:
library(shiny)
library(dplyr)
library(DT)
ui <- shiny::fluidPage(
DT::DTOutput("tab1")
)
server <- function(input, output) {
output$tab1 <- DT::renderDT({
mtcars %>%
head() %>%
DT::datatable() %>%
DT::formatStyle(
columns = "mpg",
target = "row",
color = DT::styleEqual(c(21), "white"),
backgroundColor = DT::styleEqual(c(21), "#4d4d4d"),
)
})
}
shinyApp(ui = ui, server = server)
代码:
library(shiny)
library(dplyr)
library(DT)
library(bslib)
ui <- bslib::page_sidebar(
DT::DTOutput("tab1")
)
server <- function(input, output) {
output$tab1 <- DT::renderDT({
mtcars %>%
head() %>%
DT::datatable() %>%
DT::formatStyle(
columns = "mpg",
target = "row",
color = DT::styleEqual(c(21), "white"),
backgroundColor = DT::styleEqual(c(21), "#4d4d4d"),
)
})
}
shinyApp(ui = ui, server = server)
查看第一行中的字体颜色如何通过 {bslib} 变为黑色。 我怎样才能防止这种情况发生?我想要与没有 {bslib} 时完全相同的表
事实证明
DT::datatable()
有一个参数可以控制:style
。
根据
style
参数的函数文档:
“自动”、“默认”、“bootstrap”或“bootstrap4”。如果“auto”,并且 bslib 主题当前处于活动状态,则引导样式将以“仅适用于”活动主题的方式使用。否则,将使用 DataTables 的“默认”样式。如果显式设置为“bootstrap”或“bootstrap4”,则必须注意确保页面上包含 Bootstrap 的 HTML 依赖项(以及 Bootswatch 主题,如果需要)。请注意,当显式设置时,如果存在多个 DT 表,则用户有责任确保同一页面上仅使用一个唯一的“样式”值,因为不同的样式资源可能会相互冲突。
因此,为了防止{bslib}更改
DT::datatable()
的主题,只需将style
的DT::datatable()
参数设置为default
即可。像这样:DT::datatable(style = "default")
。
因此,将其应用于我在问题中提供的最小示例:
代码:
library(shiny)
library(dplyr)
library(DT)
ui <- shiny::fluidPage(
DT::DTOutput("tab1")
)
server <- function(input, output) {
output$tab1 <- DT::renderDT({
mtcars %>%
head() %>%
DT::datatable(style = "default") %>%
DT::formatStyle(
columns = "mpg",
target = "row",
color = DT::styleEqual(c(21), "white"),
backgroundColor = DT::styleEqual(c(21), "#4d4d4d"),
)
})
}
shinyApp(ui = ui, server = server)