Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据选项卡面板选择从数据库获取数据。斯希尼_R_Shiny_Shiny Server_Shinyapps_Shiny Reactivity - Fatal编程技术网

R 根据选项卡面板选择从数据库获取数据。斯希尼

R 根据选项卡面板选择从数据库获取数据。斯希尼,r,shiny,shiny-server,shinyapps,shiny-reactivity,R,Shiny,Shiny Server,Shinyapps,Shiny Reactivity,我希望根据选项卡选择检索数据。例如,如果我单击选项卡A,它将显示选项卡A数据等等。 只有在两个选项卡中注释掉datatableoutput时,我的代码才起作用。否则,它将显示一个空页面 下面是我使用的代码 library(shiny) library(DT) library(dplyr) library(RODBC) server <- function(input, output, session) { output$table <- DT::renderDataTable

我希望根据选项卡选择检索数据。例如,如果我单击选项卡A,它将显示选项卡A数据等等。 只有在两个选项卡中注释掉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)
您不能有重复的id,例如table,您需要创建新的id,例如table1、table2等