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

koaltpgm  于 2023-05-04  发布在  其他
关注(0)|答案(4)|浏览(252)

使用R shiny & DT包,我正在创建某些表。列的数量根据用户输入而变化&不是固定的。我已经包含了下面的代码片段,以包含一个水平滚动条,这样当列数很大时,用户可以滚动查看不直接可见的列。
服务器.R:

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

使用上面的代码,水平滚动条最初是不可见的,但当我点击一行并点击键盘上的右箭头时会出现。有没有什么方法可以让滚动条在表启动后立即可见,不管我有多少列,并且我可以使用鼠标指针拖动滚动条?

更新

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

wfypjpf4

wfypjpf41#

如果你不需要滚动条,我认为你不能(或者应该)轻易地强制一个滚动条,但是上面的代码对我来说很好,它在页面初始化时显示一个滚动条。也许问题出在数据或其他方面。
这里有一个最小的例子,在页面加载时有一个水平滚动条

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

t3irkdon2#

试试这个:

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

hlswsv353#

我也会这样做:

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))
               )
    })
bvhaajcl

bvhaajcl4#

对于初学者来说,在服务器端使用数据表可能很难。你可以在服务器端实现数据表,几乎没有任何麻烦,你应该考虑使用DataTables Quick。我发现这些可以减轻我的日常工作,我想这里的每个程序员都会想要的。**注意:**不要在生产环境中使用,因为它可能会以某种方式损害您的数据。

相关问题