R shiny – sauvegarde les valeurs choisies dans selectInput

J’ai 10 boutons d’action ‘Modifier‘. Trois boutons d’action apparaissent sur chaque bouton d’action «Modifier». Après avoir cliqué sur le bouton “Enregistrer” sous les entrées sélectionnées, je veux me souvenir des valeurs sélectionnées. Si je vais à la rangée 2 -> cliquez sur ‘Éditer’ -> sélectionnez les valeurs -> cliquez sur ‘Enregistrer’ et revenez à la rangée 1, il ne se souvient pas des valeurs précédemment sélectionnées de la rangée 1.

Donc, je veux avoir deux actions sur le bouton ‘Enregistrer’ à savoir:

vous pouvez le faire en stockant des valeurs dans les valeurs reactivevValues stockées uniquement pour une session

 library(shinyjs) # needed for hide and show ui <- shinyUI(fluidPage( titlePanel("Update Select Inputs"), mainPanel( useShinyjs(), tags$head(tags$script(HTML("$(document).on('click', '.needed', function () { Shiny.onInputChange('last_btn',this.id); });"))), column(width = 6, uiOutput('ValuesAndButtons')), column(width = 6,hidden(wellPanel(id="det", lapply(1:3,function(i){ fluidRow( selectInput( paste0("Details", i), label = i, choices = c("","a","b","c"), selected = "" ) ) }), fluidRow( actionButton("Save","Save") ) )) )) ) ) server <- shinyServer(function(input, output,session) { saved_values=reactiveValues(data=NULL) output$ValuesAndButtons <- renderUI({ lapply(1:10,function(i){ fluidRow( column( width = 4, tags$span(i) ), column( width = 3, actionButton(paste0('ActionButton', i),"Edit",class="needed" ) ) ) } ) }) observe({ if(!is.null(input$last_btn)){ observeEvent(input[[input$last_btn]],{ shinyjs::show("det") } ) } }) observeEvent(input$last_btn,{ ll<-saved_values[[input$last_btn]] shinyjs::show("det") if(!is.null(ll) ){ for(i in 1:length(ll)){ updateSelectInput(session = session,inputId = names(ll)[[i]],selected = ll[[i]]) } }else{ shinyjs::reset("det") } }) observeEvent(input$Save,{ saved_values[[input$last_btn]]=lapply(names(input)[which(substring(names(input),1,7)=="Details")],function(i){ input[[ i]] }) names(saved_values[[input$last_btn]])=names(input)[which(substring(names(input),1,7)=="Details")] shinyjs::hide("det") }) }) # Run the application shinyApp(ui = ui, server = server)