无法使用 R Shiny 中的 DT 包取消选择由代理选择的行
Can't deselect a row that is selected by proxy using the DT package in R Shiny
在我闪亮的应用程序中,用户可以 select 数据 table 中的一行,这将显示有关该行的信息。如果该行被删除select,关于该行的信息将消失。
有时,某行会被代理 select 编辑,这会触发显示该行的相同信息。但是,如果用户单击该行以将其删除select,该行仍然是selected,即使它看起来是删除select。有关该行的信息不会消失,如果您要更改 table 的某些内容(切换页面并返回、更改页面长度等),该行会再次突出显示,表明它仍然是 select编辑。只有点击它三次(幻影 deselect, select, deselect),该行才真正被 deselected.
这似乎是 DT 包的问题,但我不确定。我使用的是 DT 的 0.4 版和闪亮的 1.1.0 版。这是一个可重现的例子:
library(shiny)
library(DT)
ui <- fluidPage(
fluidRow(DTOutput("table")),
fluidRow(actionButton("select", "Select First Row by Proxy")),
fluidRow(textOutput("selected_row"))
)
server <- function(input, output, session) {
output$table <- renderDT({datatable(mtcars, selection = "single")})
observeEvent(input$select, {
selectRows(proxy = dataTableProxy("table"), selected = 1)
})
observeEvent(input$table_rows_selected, {
output$selected_row <- renderText(paste0("Row selected: ", input$table_rows_selected))
})
}
shinyApp(ui = ui, server = server)
当我升级到下一个版本的 DT 包时,这个问题得到了解决。
在我闪亮的应用程序中,用户可以 select 数据 table 中的一行,这将显示有关该行的信息。如果该行被删除select,关于该行的信息将消失。
有时,某行会被代理 select 编辑,这会触发显示该行的相同信息。但是,如果用户单击该行以将其删除select,该行仍然是selected,即使它看起来是删除select。有关该行的信息不会消失,如果您要更改 table 的某些内容(切换页面并返回、更改页面长度等),该行会再次突出显示,表明它仍然是 select编辑。只有点击它三次(幻影 deselect, select, deselect),该行才真正被 deselected.
这似乎是 DT 包的问题,但我不确定。我使用的是 DT 的 0.4 版和闪亮的 1.1.0 版。这是一个可重现的例子:
library(shiny)
library(DT)
ui <- fluidPage(
fluidRow(DTOutput("table")),
fluidRow(actionButton("select", "Select First Row by Proxy")),
fluidRow(textOutput("selected_row"))
)
server <- function(input, output, session) {
output$table <- renderDT({datatable(mtcars, selection = "single")})
observeEvent(input$select, {
selectRows(proxy = dataTableProxy("table"), selected = 1)
})
observeEvent(input$table_rows_selected, {
output$selected_row <- renderText(paste0("Row selected: ", input$table_rows_selected))
})
}
shinyApp(ui = ui, server = server)
当我升级到下一个版本的 DT 包时,这个问题得到了解决。