使用Flexdashboard在Shiny tabpanel中使用DataTable填充容器

时间:2017-05-17 08:28:00

标签: r datatables shiny flexdashboard

我正在编写一个flexdashboard,在选项卡中显示带有DataTable(DT)的数据帧。

在DT和普通的flexdashboard选项卡上使用fillContainer=T时,我得到了所需的结果:我的数据表填充整个容器但不是更多。

Shinyapps.io : Flexdashboard Tabs with DT's fillContainer=T

Flexdashboard Tabs with DT::FillContainer
======================

Column {.tabset .tabset-fade}
-----------------------------------------------------------------------

### iris 

```{r}
DT::datatable(
    iris,
    fillContainer = T,
    rownames = F)
```

### mtcars 

```{r}
DT::datatable(
    mtcars,
    fillContainer = T,
    rownames = F)
```

我现在正尝试使用tabsetPanel而不是flexdashboard标签动态生成的标签。无论有没有fillContainer=T,我都试过了。但是数据表没有准确地填充容器,并且高度太长或非常短(少于2行)。在这两种情况下,分页选项都显示在最后一行的下方而不是容器的底部。

Shinyapps.io : Shiny Tabs with DT's fillContainer=T

Shiny Tabs with DT::fillContainer 
======================

Column {.tabset .tabset-fade}
-----------------------------------------------------------------------

### Tabs container with fillContainer

```{r}
library(shiny)
tabsetPanel(
  tabPanel("iris",
    DT::datatable(
      iris,
      fillContainer = T,
      rownames = F)),
  tabPanel("mtcars",
    DT::datatable(
      mtcars,
      fillContainer = T,
      rownames = F))  
)
```

Shinyapps.io : Shiny Tabs without DT's fillContainer=T

Shiny Tabs without DT::fillContainer 
======================

Column {.tabset .tabset-fade}
-----------------------------------------------------------------------

### Tabs container without fillContainer

```{r}
library(shiny)
tabsetPanel(
  tabPanel("iris",
    DT::datatable(
      iris,
      fillContainer = F,
      rownames = F)),
  tabPanel("mtcars",
    DT::datatable(
      mtcars,
      fillContainer = F,
      rownames = F))  
)
```

如何正确填充容器? 非常感谢

1 个答案:

答案 0 :(得分:0)

设置fillContainer = FALSE

style = "height:550px; overflow-y: scroll;"添加为tabPanel的参数。

我在Shinydashboard中成功使用了此功能,其中tabPanels是tabBox参数的一部分。