R Shiny中如何将DT数据表格用户当前浏览页码存入变量
实现方案
DT包在Shiny运行时会自动为每个渲染的数据表格生成内置的输入属性,其中[表格输出ID]_page就对应用户当前浏览的页码,第一页的值为1。你给出的示例中表格输出ID为preview,因此直接读取input$preview_page即可获取当前页码。
完整修改示例代码
library(shiny) library(tidyverse) library(datasets) library(DT) data <- as.data.frame(USArrests) ui <- fluidPage( dataTableOutput("preview"), # 仅作为演示输出当前页码,不需要可直接删除 verbatimTextOutput("current_page") ) server <- function(input, output) { # 定义变量x存储页码,可根据需求调整x的作用域 x <- reactiveVal(1) output$preview<- renderDataTable( datatable(data, options = list(searching = T, pageLength = 10, lengthMenu = c(5,10,15, 20), scrollY = "600px", scrollX = T )) ) # 监听页码变化,更新x的值 observeEvent(input$preview_page, { x(input$preview_page) # 如果需要存为非响应式普通变量,直接写 x <<- input$preview_page 即可,注意作用域适配 }) # 演示输出当前x的值,不需要可直接删除 output$current_page <- renderPrint({ paste0("当前页码:", x()) }) } shinyApp(ui = ui, server = server)
补充说明
- 如果只需要在响应式逻辑里使用页码,直接调用
input$preview_page即可,不需要额外存为x变量 - 如果需要将页码存为全局普通变量,将赋值语句改为
x <<- input$preview_page即可,注意<<-为全局赋值符号,要根据你的变量作用域需求调整使用
内容的提问来源于stack exchange,提问作者tfr950
相关产品推荐
相关产品推荐

