web-dev-qa-db-fra.com

Comment rendre la barre de défilement horizontale visible dans DT :: datatable

En utilisant le package R shiny & DT, je crée certaines tables. Le nombre de colonnes varie en fonction de l'entrée de l'utilisateur et n'est pas fixe. J'ai inclus l'extrait de code suivant afin d'inclure une barre de défilement horizontale afin que, lorsque le nombre de colonnes est important, l'utilisateur puisse faire défiler les colonnes qui ne sont pas directement visibles. 

server.R:

output$results <- DT::renderDataTable({
    DT::datatable(data = datasetInput(),
                  options = list(scrollX = TRUE,...)
                  )
  })
<code reduced for brevity>

À l'aide du code ci-dessus, la barre de défilement horizontale n'est pas visible au début, mais apparaît lorsque je clique sur une ligne et que je frappe la flèche droite de mon clavier. Existe-t-il un moyen de rendre la barre de défilement visible dès que le tableau est activé, quel que soit le nombre de colonnes dont je dispose, et je peux faire glisser la barre de défilement à l'aide du pointeur de la souris?

Mettre à jour :

J'ai essayé le code dans la réponse ci-dessous et c'est ce que je vois - pas de barre de défilement horizontale.

enter image description here

19
Komal Rathi

Je ne pense pas que vous puissiez (ou devriez) forcer une barre de défilement facilement si vous n'en avez pas besoin, mais le code ci-dessus fonctionne bien pour moi, il affiche une barre de défilement lorsque la page est initialisée. Peut-être que le problème est avec les données ou autre chose.

Voici un exemple minimal avec une barre de défilement horizontale au chargement de la page 

runApp(shinyApp(
  ui = fluidPage(
    DT::dataTableOutput("results", width = 300)
  ),
  server = function(input, output, session) {
    output$results <- DT::renderDataTable(
      mtcars,
      options = list(scrollX = TRUE)
    )
  }
))
33
DeanAttali

Essaye ça:

DT::datatable(sta, options = list(
  pageLength=50, scrollX='400px'), filter = 'top')
4
Aditya Kothari

J'aurais fait de cette façon aussi:

datasetInput1 <- reactive({
      infile <- input$file1
      if(is.null(infile))
        return(NULL) 
      else
        m <- read.csv(infile$datapath, header = input$header)
        return ( DT::datatable(m, extensions = 'Scroller', options = list(deferRender = F, dom = 't',
                                                                      columnDefs = list(list(className = 'dt-center',
                                                                                             targets = 5)),
                                                                     scrollY = 300, scroller = TRUE, scrollX = T,
                                                                     pageLength = 5))
               )
    })
0
I_m_LeMarque