DT::dataTableProxy
似乎无法与SearchPanes
扩展一起使用,原因如下:
- 搜索窗格需要
Select
扩展名。 Select
扩展需要DT::renderDT(server = FALSE)
选项。DT::dataTableProxy
在客户端不工作,并抛出DT错误。
library(shiny)
library(shinydashboard)
library(tidyverse)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
shiny::selectInput("rows", label = "Rows", choices = 1:nrow(mtcars)),
shiny::actionButton("new", label = "New Data")
),
dashboardBody(DT::dataTableOutput("cars"))
)
server <- function(input, output) {
rows <- reactive({ input$rows })
output$cars <- DT::renderDataTable(server = FALSE, {
expr = DT::datatable(
data = mtcars |> head(rows())
#,
#extensions = c("SearchPanes", "Select", "Buttons"),
#options = list(
# dom = "Btip",
# buttons = list("searchPanes")
#)
)
})
dtProxy <- DT::dataTableProxy("cars")
observeEvent(input$new, label = "Observe button proxy update", {
doubledata <- bind_rows(mtcars, mtcars)
DT::replaceData(proxy = dtProxy,
data = doubledata,
resetPaging = FALSE)
})
}
shinyApp(ui, server)
使用server = FALSE尝试此代码,单击New Data
,您将收到DT警告:DataTables warning: table id=DataTables_Table_0 - Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1
删除server = FALSE
和代理运行。
删除注解部分,搜索窗格出现,但没有实际的过滤器表示,并说明如果我们really want to use select extension then set select = 'none'
的消息。
以下是一些参考资料:RStudio DT ExtensionsMatt Herman Tutorial
1条答案
按热度按时间fwzugrvs1#
我最后做的是只使用
DT::datatableProxy
特性,然后在搜索窗格中使用自定义按钮。自定义按钮在How to add custom button in R Shiny datatable中找到。这需要创建一个新的被第一个无效的reactive,并检查输入是否有任何新的值。然后代理接收过滤后的数据。也许有一天他们会增加对搜索窗格的支持。
Add server-side support for SearchPanes extension #877