Кажется, есть некоторая проблема при использовании updateSearch для обновления поиска по столбцам по факторам в DT в Shiny App.Несмотря на то, что содержимое таблицы DT фильтруется правильно, при щелчке в поле выбора выбора выбранные значения не отображаются в поле в качестве введенных значений.
С другой стороны, при добавлении поиска в моментповторное рендеринг таблицы с помощью параметра searchCols = list (), похоже, что выбор поиска работает правильно и, как и ожидалось.
Ниже приведен пример, который воспроизводит это поведение.Вы можете увидеть это поведение, нажав на «Click Me!»и с помощью поля поиска имен столбцов выберите.
Есть идеи, как это исправить?
Спасибо.
library(DT)
server = shinyServer(function(input, output, session) {
values <- reactiveValues()
values$i <- 0
mtcars2 = mtcars[,c("hp","mpg")]
mtcars2$names <- as.factor(rownames(mtcars))
output$x4 = DT::renderDataTable(mtcars2, server = TRUE, filter = "top", rownames = FALSE)
dtp = dataTableProxy("x4")
output$x5 = renderPrint({
cat('Rows on the current page:\n\n')
cat(input$x4_rows_current, sep = ', ')
cat('\n\nAll rows:\n\n')
cat(input$x4_rows_all, sep = ', ')
cat('\n\nSelected rows:\n\n')
cat(input$x4_rows_selected, sep = ', ')
cat('\n\nSearch term:\n\n')
cat(input$x4_search, sep = ', ')
cat('\n\nColumn searches\n\n')
cat(input$x4_search_columns, sep = ', ')
cat('\n\nButton clicked\n\n')
cat(values$i, sep = ', ')
cat('\n\nLast action\n\n')
cat(values$last, sep = ', ')
})
observeEvent(input$mybutton,{
values$i <- values$i + 1
if (all(input$x4_search_columns == "")) {
values$last <- "Input vals"
updateSearch(dtp, keywords = list(global = "", columns = c("","", '["Mazda RX4","Hornet 4 Drive"]')))
} else {
values$last <- "Clear vals"
updateSearch(dtp, keywords = list(global = "", columns = ""))
}
})
})
ui = fluidPage(
title = 'DataTables Information',
fluidRow(
column(6, DT::dataTableOutput('x4')),
column(6, verbatimTextOutput('x5'))
),
actionButton("mybutton", "Click Me!")
)
shinyApp(ui = ui, server = server)