R 观察数据表分页事件

R 观察数据表分页事件,r,pagination,shiny,R,Pagination,Shiny,每次用户更改数据集分页的页面时,我都需要更改输入的值 我试过使用observeEvent,但它不起作用 用户界面 服务器 observeEvent(input$table, { updateTextInput(session, "inText", value = paste("New text",0)) }) 希望您能帮助我。假设您的表id是示例中给出的table,您可以使用: input$table\u state$start/input$table\u state$length+1 下

每次用户更改数据集分页的页面时,我都需要更改输入的值

我试过使用observeEvent,但它不起作用

用户界面

服务器

observeEvent(input$table, {
  updateTextInput(session, "inText", value = paste("New text",0))
})

希望您能帮助我。

假设您的表id是示例中给出的
table
,您可以使用:
input$table\u state$start/input$table\u state$length+1

下面是一个完整的示例:

library(DT)
library(shiny)
app <- shinyApp(
  ui = fluidPage(
    tags$head(
      # hides the default search functionality
      tags$style(
        HTML(".dataTables_filter, .dataTables_info { display: none; }")
      )
    ),
    fluidRow(
      column(10, 
             ""
      ), 
      column(2,              
             # adding new page filter
             uiOutput("pageFilter")
      ),
      column(12,
             dataTableOutput('table')
      )
    )
  ),
  server = function(input, output) {

    output$pageFilter <- renderUI({
      val <- input$table_state$start / input$table_state$length + 1
      numericInput("page", "Page", val, min = 1)
    })

    output$table <- DT::renderDataTable({
      iris
    }, options = list(pageLength = 5, stateSave = TRUE))

    # using new page filter
    observeEvent(input$page, {
      dataTableProxy("table") %>% selectPage(input$page)
    })
  }
)

runApp(app, launch.browser =  TRUE)
库(DT)
图书馆(闪亮)

应用程序是否与另一个问题相关:那么分页是否会因输入字段而改变,或者分页按钮是否也会“正常”触发?我试图做的是,分页可以通过分页按钮和输入正常改变。但是如果我正常更改它,我希望输入刷新到新页面。好的,那么您应该使用
input$table_state
,它将包含分页信息,…对不起,我不知道如何观察分页事件并使用input$table_state获取当前页码。
library(DT)
library(shiny)
app <- shinyApp(
  ui = fluidPage(
    tags$head(
      # hides the default search functionality
      tags$style(
        HTML(".dataTables_filter, .dataTables_info { display: none; }")
      )
    ),
    fluidRow(
      column(10, 
             ""
      ), 
      column(2,              
             # adding new page filter
             uiOutput("pageFilter")
      ),
      column(12,
             dataTableOutput('table')
      )
    )
  ),
  server = function(input, output) {

    output$pageFilter <- renderUI({
      val <- input$table_state$start / input$table_state$length + 1
      numericInput("page", "Page", val, min = 1)
    })

    output$table <- DT::renderDataTable({
      iris
    }, options = list(pageLength = 5, stateSave = TRUE))

    # using new page filter
    observeEvent(input$page, {
      dataTableProxy("table") %>% selectPage(input$page)
    })
  }
)

runApp(app, launch.browser =  TRUE)