首页 > 解决方案 > R DataTables 不会同时显示按钮和长度菜单

问题描述

当您单击 DataTable 1 选项卡时,您可以在顶部看到长度菜单,这是该问题的重点。服务器中以开头的位output$ex1编码此数据表。

在此处输入图像描述

实际上,我希望有用于列可见性和下载数据的按钮。output$ex1需要对通过添加buttons参数进行一些修改。然后,你最终得到output$ex2. 但现在我想念长度菜单。

在此处输入图像描述

我认为添加pageLength = 5, lengthMenu = c(5, 10, 15, 20)output$ex2开头的代码中可以看到的内容output$ex3可以解决这个问题,我可以恢复长度菜单。但是第三个返回给我的表与第二个完全相同。

在此处输入图像描述

1) 我怎样才能同时拥有按钮和长度菜单?

2)如何安排按钮的位置?例如,我希望 colvis 的按钮位于下载按钮的上方。

3)当您查看下面的代码时,您会看到 excel 也包含在按钮中:buttons = c('colvis', 'copy', 'csv', 'excel', 'pdf', 'print') 但是在最后 2 个表中,您都看不到 excel 的按钮。此外,我没有收到错误。

我将不胜感激任何帮助。

library(shiny)

ui <- navbarPage(
  title = 'DataTable Options',
  tabPanel('DataTable 1',  DT::dataTableOutput('ex1')),
  tabPanel('DataTable with Buttons 1',  DT::dataTableOutput('ex2')),
  tabPanel('DataTable with Buttons 2',  DT::dataTableOutput('ex3'))
)



server <- function(input, output) {


  output$ex1 <- DT::renderDataTable(
         DT::datatable(iris, 
              class = 'cell-border stripe', 
              filter = 'top',
              options = list(autoWidth = TRUE)))



  output$ex2 <- DT::renderDataTable(
         DT::datatable(iris, 
              class = 'cell-border stripe', 
              filter = 'top', extensions = 'Buttons', 
              options = list(autoWidth = TRUE, 
                             dom = 'Bfrtip', 
                             buttons = c('colvis', 'copy', 'csv', 'excel', 
                                         'pdf', 'print'))))


   output$ex3 <- DT::renderDataTable(
      DT::datatable(iris, 
              class = 'cell-border stripe', 
              filter = 'top', extensions = 'Buttons', 
              options = list(autoWidth = TRUE, 
                             pageLength = 5, lengthMenu = c(5, 10, 15, 20), 
                             dom = 'Bfrtip', 
                             buttons = c('colvis', 'copy', 'csv', 'excel', 
                                         'pdf', 'print'))))


  }


  shinyApp(ui = ui, server = server)

标签: rshinydt

解决方案


您需要在 dom 中添加“l”(小写字母“L”),这使得 Blfrtip:

B - 按钮

l - 长度变化输入控制

f - 过滤输入

r - 处理显示元素

t - 表

i - 表信息摘要

p - 分页控制

可以使用以下命令定位这些功能:

"dom": "<'row'<'col-md-3'B><'col-md-6'l><'col-md-3'f>><'row'<'col-md-12't>><'row'<'col-md-3'i><'col-md-6'><'col-md-3'p>>"

就像我们在 Bootstrap 中做的一样。


推荐阅读