如何解决如何从表中的选定行返回数据?
我有一个 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"
并为 onClick
注释 JS,然后单击一行效果很好,但正如我所说,在我的情况下,我需要其他一些东西。在上面的代码中,我在第一个 return 'select'
中添加了 if
以返回 select
的 onClick
但它不起作用。你有什么解决办法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。