R Shiny DT使用Bootstrap样式时分页按钮显示为文本的修复方法
问题原因
你使用的bs4Dash框架基于Bootstrap 4开发,而DT组件默认的style="bootstrap"参数适配的是Bootstrap 3的样式规范,二者分页组件的类名、样式规则不兼容,因此会出现分页按钮失去样式、显示为纯文本的问题。
解决方案
方案1:替换DT样式参数(最优方案)
直接将DT::renderDataTable中的style参数值修改为bootstrap4,匹配bs4Dash的Bootstrap版本即可自动适配样式:
style = "bootstrap4"
方案2:添加自定义CSS兼容
如果因业务需求必须保留style="bootstrap"配置,可在ui部分添加自定义CSS补充分页组件的样式规则:
dashboardBody( tags$style(HTML(" .dataTables_paginate .paginate_button { padding: 6px 12px; margin-left: -1px; border: 1px solid #dee2e6; color: #007bff; cursor: pointer; } .dataTables_paginate .paginate_button.current { background-color: #007bff; color: white; border-color: #007bff; } .dataTables_paginate .paginate_button:hover { background-color: #e9ecef; color: #0056b3; border-color: #dee2e6; } ")), fluidRow(column(12, DT::dataTableOutput('mytable'))) )
修改后完整可运行代码
if (interactive()) { library(shiny) library(DT) library(bs4Dash) shinyApp( ui = dashboardPage( header = dashboardHeader(), sidebar = dashboardSidebar(), body = dashboardBody( fluidRow(column(12, DT::dataTableOutput('mytable'))) ), footer = dashboardFooter() ), server = function(input, output) { output$mytable <- DT::renderDataTable(iris, style="bootstrap4", options = list( dom = 'Bfrtip', lengthMenu = c(50, 100), pageLength = 20, scrollX=TRUE, autoWidth = TRUE, paging=TRUE, searching=FALSE, ordering=TRUE )) } ) }
内容的提问来源于stack exchange,提问作者FreyGeospatial
相关产品推荐
相关产品推荐

