gpt4 book ai didi

mysql - Shiny R 重置 dataTableOutput

转载 作者:行者123 更新时间:2023-11-29 11:09:34 24 4
gpt4 key购买 nike

我在 Shiny 中有一个 CRUD 数据库应用程序,用户在下拉列表中选择一个对象,然后单击一个按钮,数据就会从 mysql 数据库中删除。用户可以使用代码 DT::dataTableOutput("reviewdata") 单击查看按钮时查看数据。当用户决定要删除数据时,他们按下一个按钮,然后执行以下代码,其中 my_sel$mydata 是一个重新查询表以重新填充下拉框的函数

#update the selection in the drop down box
updateSelectInput(session, "dropdownbox", choices = my_sel$mydata)

如前所述,当单击查看按钮时,数据首先会显示在屏幕上给用户。当他们删除它时,下拉框会从列表中删除该项目(因为它不再可删除)

我的问题是

  • 表格是否有类似的功能,因此表格应该是空白的,因为我们已经删除了数据,所以应该没有任何内容可显示

谢谢

最佳答案

这里是如何在 Shiny 中使用响应式(Reactive)表达式的示例。该应用程序显示可用表格的列表。如果用户选择一个表,则会出现几个按钮,用于查看删除该表。

library(shiny)
library(DT)

ui <- fluidPage(
title = 'Empty Table Example',
fluidRow(
column(4,
uiOutput("dataAvailable_UI"),
uiOutput("controls_UI")
),
column(8, DT::dataTableOutput('reviewdata'))
)
)

server <- function(input, output, session) {
# similate the available tables in DB
availableDatasets <- c("mtcars","iris", "cars", "trees")

dataset <- reactive({
input$deleteBT # to update when data is deleted

# only return the corresponding table if user clicked on Review
if (is.null(input$ReviewBT) || input$ReviewBT == 0)
return(NULL)

dataName <- isolate(input$dropdownbox)
if (is.null(dataName) || !dataName %in% availableDatasets)
return(NULL)

# return the selected data
get(dataName)

})

output$reviewdata = DT::renderDataTable(dataset())

output$dataAvailable_UI <- renderUI({
# no data is selected
selectInput("dropdownbox", "Select a Table",
choices = c("", availableDatasets))
})

output$controls_UI <- renderUI({
# only shows the buttons if a dataset is selected
if (!is.null(input$dropdownbox) && nchar(input$dropdownbox) > 0)
div(
actionButton("ReviewBT", "Review Table"),
actionButton("deleteBT", "Delete Table")
)
})

observeEvent(input$deleteBT,{
# delete data and update the selectInput
dataName <- input$dropdownbox
if (dataName %in% availableDatasets) {
availableDatasets <<- availableDatasets[-match(dataName, availableDatasets)]
updateSelectInput(session, "dropdownbox", choices = c("",availableDatasets))
}
})
}
shinyApp(ui = ui, server = server)

关于mysql - Shiny R 重置 dataTableOutput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com