查询嵌入闪亮应用程序中的数据表的状态/属性

Querying states/properties of datatables embedded in a shiny app

本文关键字:数据表 状态 属性 应用程序 查询      更新时间:2023-09-26

我有一个通过DT::datatable接口/创建并通过DT::renderDataTable呈现的DataTable。

如何查询数据表的状态/属性,以便将其用于被动UI组件的设计?

例如:如何查询用户选择的iDisplayLength属性(AFAIU,控制显示的元素/行数)的值?

我想以以下方式使用该值(伪代码):

if (iDisplayLength != "All") {
  do not enable vertical scrolling
} else {
  enable vertical scrolling
}

由于垂直滚动部分,这个问题在某种程度上与这个问题有关,在这里你会找到一个实际的例子。

您可以使用input$tableId_state$length访问用户选择的页面长度。您需要将stateSave选项设置为TRUE才能正常工作,请参阅此处的第2.2节。

这里有一个最小的例子:

library(shiny)
shinyApp(
  ui = fluidPage(textOutput("pageLength"),
  DT::dataTableOutput('tbl'))
  ,
  server = function(input, output) {
    output$tbl = DT::renderDataTable(
      iris,options=list(stateSave=TRUE)
    )
    output$pageLength = renderText(paste("Lenght of the pages:",input$tbl_state$length))
    })
  }
)

如果你需要这个值来做其他事情,你总是可以把它存储在一个反应值中。