Похоже, что 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Учебник Мэтта Германа
В итоге я использовал только функцию DT::datatableProxy
, а затем использовал пользовательскую кнопку для панелей поиска. Пользовательская кнопка была найдена здесь Как добавить пользовательскую кнопку в R Shiny datatable. Это потребовало создания нового реактива, который был признан недействительным первым, и проверки наличия новых значений на входах. Затем прокси получил отфильтрованные данные.
Возможно, когда-нибудь они добавят поддержку панелей поиска.