每次用户更改数据集分页的页面时,我都需要更改输入的值。
我尝试使用 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))
})
希望你能帮助我。
答案 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)