You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将tabPanel关联至menuSubItem并调整Data Frame间距?

解决方法

1. 关联tabPanel到Inventory子菜单

原代码错误创建了两个独立的tabsetPanel且共用tabName = "inventory",导致页面结构混乱。正确做法是将两个表格放在**同一个tabPanel**中,确保该tabPanel的tabName与侧边栏menuSubItem的tabName完全一致(均为"inventory")。

2. 为两个表格添加垂直间距

有两种简单实现方式:

  • 使用br()标签添加换行间距
  • 用CSS样式精确控制表格上下外边距

修正后的完整代码

library(shiny)
library(shinydashboard)
library(rhandsontable)
library(data.table)

df1 = data.table(
  "Column1"= as.character(),
  "Column2"= as.numeric())

df2 = data.table(
  "Column1"= as.character(),
  "Column2"= as.numeric())


ui <- dashboardPage(
  dashboardHeader(title = "Assets"),
  dashboardSidebar(
    menuItem("Home", tabName = "home"),
    menuItem("Current assets", tabName = "CurrentAssets",
             menuSubItem("Inventory", tabName="inventory")
    )
  ),
  dashboardBody(
    tabsetPanel(
      tabPanel(tabName = "inventory",
               h4("df1"),
               rHandsontableOutput("Table1"),
               # 方式1:用br()添加换行间距,多写可增大间距
               br(), br(),
               h4("df2"),
               # 方式2:用div包裹精确控制间距(与br二选一即可)
               # div(rHandsontableOutput("Table2"), style = "margin-top: 25px;")
               rHandsontableOutput("Table2")
      ),
      # 补充Home页面的tabPanel,让侧边栏菜单正常跳转
      tabPanel(tabName = "home",
               h3("Home Page")
      )
    )
  )
)


server <- function(input, output, session) {
  
  output$Table1 <- renderRHandsontable({
    rhandsontable(df1)
  })
  
  output$Table2 <- renderRHandsontable({
    rhandsontable(df2)
  })
  
}

shinyApp(ui, server)

关键修改说明

  • 移除多余的tabsetPanel,将两个表格整合到同一个inventory标签页中,确保侧边栏点击后正确加载页面
  • 通过br()或CSS样式实现表格间的垂直间距,按需调整间距大小
  • 补充Home页面的tabPanel,完善侧边栏菜单的跳转逻辑

内容的提问来源于stack exchange,提问作者firuz.safaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 03:43:33