r - 如何从表中的选定行返回数据?
问题描述
我有一个reactable
表格并尝试显示选定行的信息。实际上,我可以轻松地使用onClick="select"
并将数据存储为响应式使用getReactableState
,但我的情况略有不同。我为每一行添加了“保存”按钮,并使用一些 JS 从给定行返回数据。现在我想单独返回数据 - 使用“保存”按钮并连续单击。不幸的是,当我单击某行时,不会返回任何数据(不显示output$text
)。如果我使用如下示例中的 JS,如何通过单击一行来显示行的数据?
这是一个可重现的例子。如果单击“保存”,则会出现窗口并显示数据。如果单击一行,则表格下方的面板中不会显示任何数据:
if (interactive()) {
library(shiny)
library(reactable)
data <- cbind(MASS::Cars93[, 1:3], saveCol = NA)
ui <- fluidPage(
reactableOutput("table"),
tags$h3('Row details to display if you click in a row:'),
verbatimTextOutput("text")
)
server <- function(input, output) {
selectedRow <- reactive(reactable::getReactableState("table", "selected"))
output$table <- renderReactable({
reactable(
data,
filterable = TRUE,
searchable = TRUE,
columns = list(
saveCol = colDef(
name = "",
sortable = FALSE,
cell = function() htmltools::tags$button("save")
)),
#onClick = "select"
onClick = htmlwidgets::JS(
"function(rowInfo, colInfo) {
if (colInfo.id !== 'saveCol') {
return 'select'
}
window.alert('Details for row ' + rowInfo.index + ':\\n' + JSON.stringify(rowInfo.row, null, 2))
if (window.Shiny) {
Shiny.setInputValue('save', { index: rowInfo.index + 1 }, { priority: 'event' })
}
}"
)
)
})
# display selected table's row
output$text <- renderPrint({
data[selectedRow(),]
})
}
shinyApp(ui, server)
}
如果您取消注释onClick="select"
并评论 JS,onClick
那么连续单击效果很好,但正如我所说,就我而言,我需要其他东西。在上面的代码中,我return 'select'
首先添加if
了返回select
,onClick
但它不起作用。你有任何想法如何解决它吗?
解决方案
推荐阅读
- python - How to Implement Mixup in Keras Sequence?
- azure - Azure AD B2C 密码重置 - 跳过电子邮件验证
- matlab - How to assign different colors to each data set using plotpv?
- git - I accidently deleted everything in a remote repository, and force rewrote history
- javascript - 到达页面顶部的某个元素时如何添加类并删除它?
- vba - 在 Access 中运行 VBA 后出现错误“无法锁定表”
- sql - 选择订单总和最多的买家名称
- terminal - 热门修复“无法将 {button 返回:“Connect”,文本返回:“test”} 转换为 Unicode 文本类型。”
- c# - System.UnauthorizedAccessException 拒绝错误
- python - 如何在python中将字典键字符串转换为变量(参数)?