我可以使用回调参数更改最初在DataTable中显示的页面,例如output$testTable <- DT::renderDataTable(iris, callback = JS('table.page(2).draw(false);'))
但是如何根据用户输入更改页面?是否有selectRows
使用dataTableProxy
类似的内容?
答案 0 :(得分:2)
以下是如何做到这一点。您需要创建一个自定义js函数,然后从服务器调用它(在此示例中按钮将页面更改为随机页面):
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
mainPanel(DT::dataTableOutput("test"),
actionButton("btn","Press me"),
tags$script(HTML(
"Shiny.addCustomMessageHandler('pager',function(page) {
$('#'+'test').find('table').DataTable().page(page).draw(false);
})"
)))),
server = function(input, output,session) {
output$test <- DT::renderDataTable({
mtcars
})
observeEvent(input$btn,{
page <- sample(1:4,1)
session$sendCustomMessage("pager",page-1)
})
}
)