在DT与Shiny中使用DataTables Scroller扩展并启用fillContainer=TRUE可行吗?
解决Shiny中DT结合Scroller扩展时fillContainer滚动后表格缩小的问题
可以实现需求,你遇到的问题是因为scrollY的固定高度设置和fillContainer = TRUE的自适应逻辑冲突了。当启用Scroller扩展时,scrollY的固定值会覆盖fillContainer的自适应行为,滚动后表格就会缩到该固定高度对应的行数。
修正方案:
- 移除
options配置中的scrollY参数,让fillContainer = TRUE接管表格高度的自适应逻辑 - 保留
scroller和deferRender以维持Scroller扩展的滚动加载性能
修正后的完整代码:
library(shiny) library(DT) ui <- fluidPage( div( style = "height: 500px", DT::DTOutput("table", height = "100%") ) ) server <- function(input, output, session) { output$table <- DT::renderDT({ DT::datatable( iris, options = list( scroller = TRUE, deferRender = TRUE ), fillContainer = TRUE, extensions = "Scroller" ) }) } shinyApp(ui, server)
原理说明:
去掉scrollY后,DT会根据父容器(那个设置了height: 500px的div)的高度自动调整表格的可滚动区域高度,fillContainer = TRUE会确保表格始终填满容器空间。同时Scroller扩展依然正常工作,实现滚动时按需渲染数据,避免一次性加载大量数据导致的性能问题。
内容的提问来源于stack exchange,提问作者user25173469
相关产品推荐
相关产品推荐

