2016-11-28 4 views
0

Shinyのデータベースアプリケーションをドロップダウンリストで選択すると、ボタンがクリックされ、データがmysqlデータベースから削除されます。ユーザは、DT::dataTableOutput("reviewdata")コードを使用してレビューボタンをクリックするとデータを見ることができます。ユーザーは、彼らがボタンを押してデータを削除することを決定し、my_sel$mydataが関数である次のコードが実行されると述べたように、ドロップダウンボックスShiny R dataTableOutputをリセットする

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

に再移入し、テーブルを再照会したときにレビューボタンがクリックされると、データが最初に画面にユーザに表示されます。彼らはそれを削除すると、ドロップダウンボックスが(削除するために、その利用できなくなったように)リストから項目を削除し

私の質問は

  • あるテーブルに対して同様の機能がありますので、テーブルはので空白にする必要がありますここで

おかげ

+0

リアクティブデータセットを使用して、表示するデータがない場合は「NULL」を返します。データテーブルは自動的に更新されます。 – Geovany

+0

こんにちは@Geovanyあなたはあなたが念頭に置いているものの例や、もしあなたが持っているなら、例へのリンクを教えてくれますか? –

答えて

1

がシャイニーにreactive表現を使用する方法の一例である表示するものがあってはならないので、我々はデータを削除しました。このアプリは利用可能なテーブルのリストを表示します。ユーザーが1つのテーブルを選択すると、いくつかのボタンがReviewDeleteという表に表示されます。

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)