如何将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
相关产品推荐
相关产品推荐

