更新数据时如何保留DT选项

How to retain DT Options when updating data

我有一个非常简单的闪亮应用程序,我想在点击更新按钮后保留 autoWidth = TRUE。出于某种原因,我在更新后得到了一个全页宽的 DT。我错过了什么?

library(tidyverse)
library(shiny)

ui <- fluidPage(
    titlePanel("Iris button"),
    sidebarLayout(
        sidebarPanel(
          actionButton("UpdateButton", "Update!")
        ),

        # Show DT
        mainPanel(
           DTOutput("dt.iris.10")
        )
    )
)

server <- function(input, output) {
    dat.iris.10 <- iris %>%
      slice(1:10) %>%
      select(Sepal.Width)
    
    dat.react <- reactiveValues()
    dat.react$Data <- dat.iris.10
    
    output$dt.iris.10 <- renderDT(
      datatable(dat.react$Data,
                options = list(autoWidth = TRUE)
      ), server = FALSE
    )
    
    observeEvent(input$UpdateButton, {
      dat.react$Data <- dat.react$Data * 10
    }
    )
    
}

# Run the application 
shinyApp(ui = ui, server = server)

您应该使用选项 scrollX = TRUE

试试这个

output$dt.iris.10 <- renderDT(
    datatable(dat.react$Data 
              , options = list(autoWidth = TRUE
                               , scrollX=TRUE
                               )
    ), server = FALSE
  )