微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从表中的选定行返回数据?

如何解决如何从表中的选定行返回数据?

我有一个 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 以返回 selectonClick 但它不起作用。你有什么解决办法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。