6

我有我希望在 R 的 flexdashboard 中显示的数据。我使用构建数据表DT::renderDataTable({DT::datatable(data(), options=list(scrollX=TRUE))})

这在显示 10 个条目时效果很好,但是当我选择显示 25 个条目的选项时,我无法向下滚动到页面底部并单击第二页按钮、下一个按钮等。我无法像垂直滚动一样我以前可以。我已经尝试了这些sScrollY = "300px"选项,但这不会让数据表扩展以填充我的 flexdashboard 上的整个页面。问题是当我尝试在 y 方向滚动时,观察行被截断并且无法访问。

我想知道我需要做什么才能使数据表按预期扩展和填充,如https://shiny.rstudio.com/gallery/datatables-options.html所示

从示例中,您可以看到当您更改显示的行数时仍然可以上下滚动。我不能在新版本的数据表中这样做。截至目前,我将显示的行数限制为 10...但是,这不是一个长期的解决方案。

任何想法都非常感谢。谢谢你。最佳,NF

4

4 回答 4

2

我还没有找到我满意的解决方案,但在此期间,我正在使用sScrollY = '75vh'争论并像这样构建数据表:

DT::renderDataTable({ DT::datatable(plot_data(), options = list(scrollX = TRUE, sScrollY = '75vh', scrollCollapse = TRUE), extensions = list("Scroller")) })

至少这样分页是可见的。如果有人有其他想法,我很想听听。暂时干杯。——内特

于 2017-01-24T16:33:31.150 回答
1

我有同样的问题,我不能让数据表扩展。问题是所有数据表autoWidth = FALSE默认都有该选项,因此您需要将其更改为autoWidth = TRUE.

尝试这样的事情:

DT::renderDataTable({DT::datatable(data(), options=list(autoWidth = TRUE,scrollX=TRUE))})

之后,您应该可以使用 Width 操作。

这是一个例子。

  library(shiny)
  library(shinydashboard)
  library(DT)

  ui <- dashboardPage(
  dashboardHeader(title="Data Table"),
  dashboardSidebar(
    menuItem(text="Menu",icon=icon("bars"),
             menuSubItem(text="Show datatable",tabName="ShowData", icon=icon("search")))
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName="ShowData",
              box(DT::dataTableOutput("Data"),width = 12)))))

server <- shinyServer(function(input, output) {

  output$Data<-DT::renderDataTable({DT::datatable(data(),options = list(autoWidth = TRUE,scrollX = TRUE))})
})

shinyApp(ui = ui, server = server)
于 2017-01-23T21:17:12.363 回答
0

您可以使用:option = list(scrollY = 300, scrollCollapse = TRUE)。我在 R Notebook 中试过这个,它对我有用。

于 2020-07-07T13:44:24.483 回答
0

感谢您报告此事。正如我在rstudio/DT#818中回答的那样,可以通过fillContainer = TRUEDT::datatable().

我的意思是像下面这样改变块就足够了。


### renderDataTable (reactive)

```{r}

DT::renderDataTable(datatable(mydataset(), rownames = TRUE,
                              options = list(bPaginate = FALSE, searching = FALSE, info = FALSE),
                              fillContainer = TRUE))
```

FlexDashBoard 将启用使用静态数据(DT::datatable())的原因。fillContainer但是,在闪亮模式下,此功能无法执行。

于 2020-10-06T13:22:16.550 回答