javascript - R Shiny Datatable:防止再次单击已选择的行时取消选择它
问题描述
R (ver 3.4.1) 我正在使用闪亮 (ver 1.0.5) 中的 DT (ver 0.4) 包,并且需要在用户再次单击它时防止取消选择已选择的行。例如,在下图中,如果用户再次单击第 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)
)
})
)
我想知道是否有一种简单的方法可以做到这一点。谢谢!
解决方案
尝试pointer-events: none
在 css 中使用:
table.dataTable tbody tr.selected {
pointer-events: none
}
唯一的限制是它会阻止当前选定行上的整个悬停/单击事件,因此您不能在具有可悬停/可单击 HTML 内容的列上使用它。
我希望它有帮助!
推荐阅读
- android - 使用两个不同的 id 发布同一个应用程序
- docker - Docker:本地主机上暴露端口的连接被拒绝
- bash - shell vs 终端 vs 命令行 vs BASH?
- python - fcntl.lockf 在文件的上下文管理器中
- powershell - Powershell foreach 和 export-csv 不起作用
- c - 我如何传递指针参数有什么问题吗?
- android - 任务 ':app:processDebugResources' 执行失败。无法执行 aapt Ionic 4 android
- python - 使用 Notepad++ 时如何删除关联符号?
- swift - CloudRun 中的 Apple SwiftNIO - 这可能吗?
- c++ - 如何编写 C++ 库以使用 span 的任何实现
?