Обновить флажки из базы данных после нажатия кнопки действия в R блестящий - PullRequest
0 голосов
/ 11 октября 2018

Я создаю блестящее приложение, которое будет получать значения из таблицы базы данных и обновлять другое по запросу пользователя.Проблема возникает после нажатия кнопки добавления.Флажки содержат то же значение, что и ранее, и не получают новые значения из базы данных.

ui <- fluidPage(

  checkboxGroupInput("inCheckboxGroup", "Available names", td),
  checkboxGroupInput("inCheckboxGroup2", "Present names",c(ch1,ch)),
  actionButton("action", label = "Add")
)

td, ch1 и ch - списки, собранные из базы данных.

z <- NULL    
server <- function(input, output, session) {

  # checkbox listener
  observe({
    x <- input$inCheckboxGroup
    y <- NULL

    if (is.null(x))
      x <- character(0)

    # Get the names for these ids
    for (i in x){
      y <- dbFetch(dbSendQuery(conn, paste0("--sql query--") ))
      z <- c(z,y[,1])
    }

    # Print the names from previous block into the checkboxes
    updateCheckboxGroupInput(session, "inCheckboxGroup2",
                             choices = c(ch1,z),
                             selected = z)
  })

  # button listener
  observeEvent(input$action,{
    for(i in input$inCheckboxGroup){
      rs <- dbSendQuery(conn, paste0("--sql query--"))
      dbFetch(rs)
    }
    showNotification("Row inserted")
  })
}

Я пытался создать функцию обновления страницы или сброса ввода, который бы помог.Но даже перезагрузка страницы ничего не делает.Что будет лучшим подходом для этого?

1 Ответ

0 голосов
/ 11 октября 2018

Вам нужно обновить флажки после нажатия кнопки, чтобы updateCheckboxGroupInput должен быть в observeEvent для кнопки действия.Ниже приведен пример того, как это сделать.

library(shiny)

td<-c(1,2,3)
ch1<-c(1,2,3)
ch<-c(1,2,3)


ui <- fluidPage(
  checkboxGroupInput("inCheckboxGroup", "Available names", td),
  checkboxGroupInput("inCheckboxGroup2", "Present names",c(ch1,ch)),
  actionButton("action", label = "Add")
)

server<-function(input,output,session){

  # button listener
  observeEvent(input$action,{
    database<-c(4,5,6)
    updateCheckboxGroupInput(session,"inCheckboxGroup", choices = database)
    })

  }

shinyApp(ui, server)

enter image description here enter image description here

Если вы пытаетесь обновить значения флажков, выполните аналогичную команду, но использовалиselected.Также ниже показано, как обновить оба набора флажков.

  # button listener
  observeEvent(input$action,{
    database<-c(1,3)
    updateCheckboxGroupInput(session,"inCheckboxGroup", selected=database)
    #For the Second group simply call the other label
    updateCheckboxGroupInput(session,"inCheckboxGroup2", selected=database)
    })

 }

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...