观察数据表分页事件Shiny

时间:2017-05-09 08:06:56

标签: r pagination shiny

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

我尝试使用 observeEvent ,但它不起作用。

UI

fluidRow(
  column(10, 
         ""
  ), 
  column(2,              
         textInput("inText", "Input text 2", value = "Default text")
  ),
  column(12,
         dataTableOutput('table')
  )
)

服务器

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

希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

假设您的表格ID为table,如您的示例中所示,您可以使用: input$table_state$start / input$table_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)