1

Context: I created a shiny app with multiple tabsets in the document. I am looking to create buttons for each tabset which allows users to download the data into an excel spreadsheet or a CSV.

Here is a reproduceable example:

library(shiny)
library(DT)

ui <- fluidPage(
  titlePanel("Tabsets"),
  sidebarLayout(
    sidebarPanel(
      textInput('search', "Search"),
    ),
    mainPanel(
      tabsetPanel(id = "tabsetPanelID",
                  type = "tabs",
                  tabPanel("Tab1", DTOutput('DT1')),
                  tabPanel("Tab2", DTOutput('DT2')),
                  tabPanel("Tab3", DTOutput('DT3'))
      )
    )
  )
)

server <- function(input, output, session) {
  output$DT1 = renderDT(iris)
  DTProxy1 <- dataTableProxy("DT1")
  
  output$DT2 = renderDT(iris)
  DTProxy2 <- dataTableProxy("DT2")
  
  output$DT3 = renderDT(iris)
  DTProxy3 <- dataTableProxy("DT3")
  
  observeEvent(c(input$search, input$tabsetPanelID), {
    updateSearch(DTProxy1, keywords = list(global = input$search, columns = NULL))
    updateSearch(DTProxy2, keywords = list(global = input$search, columns = NULL))
    updateSearch(DTProxy3, keywords = list(global = input$search, columns = NULL))
  })
}

shinyApp(ui, server)
Jaskeil
  • 1,044
  • 12
  • 33

0 Answers0