10 votes

Shiny renderDataTable table_cell_clicked

J'essaie de créer un tableau à l'aide de Shiny, dans lequel l'utilisateur peut cliquer sur une ligne afin d'obtenir des informations supplémentaires sur cette ligne. Je pensais avoir compris comment faire (voir le code joint).

Cependant, dès que l'utilisateur clique sur le bouton d'action "getQueue", la fonction observeEvent(input$fileList_cell_clicked, {}) semble être appelée. Pourquoi cet événement serait-il appelé avant même que l'utilisateur ait la possibilité de cliquer sur une ligne ? Est-il également appelé lorsque le tableau est généré ? Existe-t-il un moyen de contourner ce problème ?

Je dois remplacer "output$devel <- renderText("cell_clicked_called")" par un code qui aura toutes sortes d'erreurs s'il n'y a pas de cellule réelle à laquelle se référer.

Merci pour tout conseil !

ui <- fluidPage(
   actionButton("getQueue", "Get list of queued files"),
   verbatimTextOutput("devel"),
   DT::dataTableOutput("fileList")     
)

shinyServer <- function(input, output) {
   observeEvent(input$getQueue, {
   #get list of excel files
   toTable <<- data.frame("queueFiles" = list.files("queue/", pattern = "*.xlsx")) #need to catch if there are no files in queue
   output$fileList <- DT::renderDataTable({
     toTable
   }, selection = 'single') #, selection = list(mode = 'single', selected = as.character(1))
   })
   observeEvent(input$fileList_cell_clicked, {
     output$devel <- renderText("cell_clicked_called")
   })}

shinyApp(ui = ui, server = shinyServer)

code d'erreur minimal

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X