【问题标题】:Observe datatable pagination event Shiny观察数据表分页事件 Shiny
【发布时间】:2017-05-09 08:06:55
【问题描述】:

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

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

用户界面

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))
})

希望你能帮助我。

【问题讨论】:

  • 它是否与另一个问题有关:那么分页会因输入字段而改变,还是分页按钮也可以“正常”触发?
  • 我尝试做的是分页可以通过分页按钮和输入正常更改。但如果我正常更改它,我希望输入刷新到新页面。
  • 好的,那么你应该使用input$table_state,它将包含分页信息,...
  • 对不起,我不明白如何观察分页事件并使用 input$table_state 获取当前页码。

标签: r pagination shiny


【解决方案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)

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2017-04-24
    • 1970-01-01
    • 2019-09-15
    • 2020-03-13
    • 2016-12-11
    • 1970-01-01
    • 2017-04-13
    • 2021-11-28
    相关资源
    最近更新 更多