根据所选的 tabPanel 从数据库中获取数据。 R闪亮
GET data from database based on the tabPanel selection. RShiny
我想根据选项卡检索数据 selection.For 例如,如果我单击选项卡 A,它应该显示选项卡 a 数据等等。
仅当我在 2 个选项卡中注释掉 datatableoutput 时,我的代码才有效。否则,它会显示一个空白页面。
下面是我使用的代码。
library(shiny)
library(DT)
library(dplyr)
library(RODBC)
server <- function(input, output, session) {
output$table <- DT::renderDataTable({
x <- req(input$tabs)
print(x)
sql <- paste0("EXEC [dbo].[usp_GET_Applications] @pCategory_Name=N'", input$tabs,"'")
res = connectionBtS$sqlQuery(sql)
dfData <- res$getResult()
dfData <- data.frame(dfData)
DT::datatable(dfData %>% select("Application","Description","Contact", "Email"), escape = FALSE ,
options = list(
columnDefs = list(list(targets = c(4), visible = FALSE)),
rowCallback = JS(
"function(row, data) {",
"var full_text = data[4] ",
"$('td:eq(3)', row).attr('title', full_text);",
"}"))
)
})
}
ui <- shinyUI(fluidPage(h1(titlePanel("TITLE"))),
tabsetPanel(id="tabs",
tabPanel("Tab A", value="A",DT::dataTableOutput("table")),
tabPanel("Tab B", value="B", DT::dataTableOutput("table")),
tabPanel("C", # value="C",DT::dataTableOutput("table")),
)))
shinyApp(ui = ui, server = server)
期待帮助。
非常感谢。
根据我的评论,您不能拥有相同的对象 id
,因此请尝试渲染不同的对象
library(shiny)
library(DT)
ui <- fluidPage(
h1(titlePanel("TITLE")),
tabsetPanel(id="tabs",
tabPanel("Tab A",
value="A",
DT::dataTableOutput("table")
),
tabPanel("Tab B",
value="B",
DT::dataTableOutput("table2")
),
tabPanel("Tab C",
value="C",
DT::dataTableOutput("table3")
)
)
)
server <- function(input, output, session) {
table_data <- reactive({
head(mtcars)
})
output$table <- DT::renderDataTable({
table_data()
})
output$table2 <- DT::renderDataTable({
table_data()
})
output$table3 <- DT::renderDataTable({
table_data()
})
}
shinyApp(ui = ui, server = server)
我想根据选项卡检索数据 selection.For 例如,如果我单击选项卡 A,它应该显示选项卡 a 数据等等。 仅当我在 2 个选项卡中注释掉 datatableoutput 时,我的代码才有效。否则,它会显示一个空白页面。
下面是我使用的代码。
library(shiny)
library(DT)
library(dplyr)
library(RODBC)
server <- function(input, output, session) {
output$table <- DT::renderDataTable({
x <- req(input$tabs)
print(x)
sql <- paste0("EXEC [dbo].[usp_GET_Applications] @pCategory_Name=N'", input$tabs,"'")
res = connectionBtS$sqlQuery(sql)
dfData <- res$getResult()
dfData <- data.frame(dfData)
DT::datatable(dfData %>% select("Application","Description","Contact", "Email"), escape = FALSE ,
options = list(
columnDefs = list(list(targets = c(4), visible = FALSE)),
rowCallback = JS(
"function(row, data) {",
"var full_text = data[4] ",
"$('td:eq(3)', row).attr('title', full_text);",
"}"))
)
})
}
ui <- shinyUI(fluidPage(h1(titlePanel("TITLE"))),
tabsetPanel(id="tabs",
tabPanel("Tab A", value="A",DT::dataTableOutput("table")),
tabPanel("Tab B", value="B", DT::dataTableOutput("table")),
tabPanel("C", # value="C",DT::dataTableOutput("table")),
)))
shinyApp(ui = ui, server = server)
期待帮助。 非常感谢。
根据我的评论,您不能拥有相同的对象 id
,因此请尝试渲染不同的对象
library(shiny)
library(DT)
ui <- fluidPage(
h1(titlePanel("TITLE")),
tabsetPanel(id="tabs",
tabPanel("Tab A",
value="A",
DT::dataTableOutput("table")
),
tabPanel("Tab B",
value="B",
DT::dataTableOutput("table2")
),
tabPanel("Tab C",
value="C",
DT::dataTableOutput("table3")
)
)
)
server <- function(input, output, session) {
table_data <- reactive({
head(mtcars)
})
output$table <- DT::renderDataTable({
table_data()
})
output$table2 <- DT::renderDataTable({
table_data()
})
output$table3 <- DT::renderDataTable({
table_data()
})
}
shinyApp(ui = ui, server = server)