R Shiny Datatable:再次单击已选定的行时防止取消选择该行

Shr*_*ree 5 javascript r datatables shiny dt

R(版本 3.4.1) 我正在使用闪亮(版本 1.0.5)的 DT(版本 0.4)包,并且需要当用户再次单击它时,我想防止取消选择已选择的行。例如,在下图中,如果用户再次单击第 3 行,则不应取消选择它。但是,如果用户选择一个新行,则该新行将被选中,而较早的行将被取消选择。

我想我需要的是数据表完全忽略已选择的行上的点击事件。

如果用户再次单击第 3 行,则不应取消选择该行,但如果他单击新行,则应在取消选择旧行的同时选择该新行

我尝试使用shinyjs::onclick如下所示的方法,但并不理想,因为它似乎“取消选择并重新选择”所选行(蓝色突出显示消失并再次单击时重新出现)而不是阻止取消选择

library(shiny)
library(DT)
library(shinyjs)

shinyApp(
  ui <- shinyUI(
    fluidPage(
      shinyjs::useShinyjs(),
      DTOutput("test")
    )
  ),  
  server <- shinyServer(function(input, output, session) {

    output$test <- renderDT({
      datatable(head(iris), selection = 'single')
    })    
    shinyjs::onclick("test",
               selectRows(dataTableProxy("test"), selected = input$test_rows_selected)
             )    
  })
)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种简单的方法可以做到这一点。谢谢!

R. *_*ang 2

pointer-events: none尝试在CSS中使用:

table.dataTable tbody tr.selected {
  pointer-events: none
}
Run Code Online (Sandbox Code Playgroud)

唯一的限制是它会阻止当前选定行上的整个悬停/单击事件,因此您不能在具有可悬停/可单击 HTML 内容的列上使用它。

我希望它有帮助!