如何在DT :: datatable中使水平滚动条可见

时间:2015-06-10 19:16:13

标签: r datatables scrollbar shiny horizontal-scrolling

使用R闪亮& DT包,我正在创建某些表。列数根据用户输入而变化。不固定。我已经包含以下代码片段以包含水平滚动条,以便当列数较大时,用户可以滚动不直接可见的列。

server.R:

output$results <- DT::renderDataTable({
    DT::datatable(data = datasetInput(),
                  options = list(scrollX = TRUE,...)
                  )
  })
<code reduced for brevity>

使用上面的代码,水平滚动条最初不可见,但是当我点击一行并点击键盘上的右箭头时会出现。无论我有多少列,滚动条是否有任何方式都可以显示,无论我有多少列,我都可以使用鼠标指针拖动滚动条?

更新

我在下面的答案中尝试了代码,这就是我所看到的 - 没有水平滚动条。

enter image description here

3 个答案:

答案 0 :(得分:38)

如果您不需要,我认为您不能(或应该)强制滚动条,但上面的代码对我来说很合适,它会在页面初始化时显示滚动条。也许问题出在数据或其他方面。

这是一个在页面加载时具有水平滚动条的最小示例

runApp(shinyApp(
  ui = fluidPage(
    DT::dataTableOutput("results", width = 300)
  ),
  server = function(input, output, session) {
    output$results <- DT::renderDataTable(
      mtcars,
      options = list(scrollX = TRUE)
    )
  }
))

答案 1 :(得分:4)

试试这个:

DT::datatable(sta, options = list(
  pageLength=50, scrollX='400px'), filter = 'top')

答案 2 :(得分:0)

我也会这样做:

datasetInput1 <- reactive({
      infile <- input$file1
      if(is.null(infile))
        return(NULL) 
      else
        m <- read.csv(infile$datapath, header = input$header)
        return ( DT::datatable(m, extensions = 'Scroller', options = list(deferRender = F, dom = 't',
                                                                      columnDefs = list(list(className = 'dt-center',
                                                                                             targets = 5)),
                                                                     scrollY = 300, scroller = TRUE, scrollX = T,
                                                                     pageLength = 5))
               )
    })