重置R reactable中的选定行

时间:2019-12-23 16:38:47

标签: r shiny

当表1中的任何选定行更改时,我需要取消选择表2中的所有行。

按照下面的示例代码执行这些步骤,以了解我的意思。

  1. 选择表1中的所有行(然后显示表2)
  2. 在表2中选择“ a”
  3. 在表1中取消选择“ a”。

您将看到刻度线刚刚传递给表2中的“ b”,因为selectionId tableid2的值仍为1。 我尝试了一些想法(在下面注释),以编程方式更改tableid2的值,但是没有运气。

library(reactable)
# devtools::install_github("glin/reactable")
# reactable   * 0.1.0.9000 2019-12-13 [1] Github (glin/reactable@566a4ba)
library(shiny)
library(data.table)

my_data <- data.table(col1 = letters[1:5])

ui <- shinyUI(
    fluidPage(
        # shinyjs::useShinyjs(),
        column(4,
            h5('Table 1'),      
        reactableOutput("test_table_react1")
            ),
        column(4,
        h5('Table 2'),      
        reactableOutput("test_table_react2")
            )
        )
)

server <- shinyServer(function(input, output, session) {

      output$test_table_react1 <- renderReactable({
        reactable(
            data = my_data,
            selection = "multiple",
            selectionId = "tableid1",
            onClick = "select",
            defaultSelected = NULL,
            fullWidth = FALSE
        )
    })

     observeEvent(input$tableid1, {
        # shinyjs::reset(id = 'tableid2')
        # output$test_table_react2 <- renderReactable({NULL})
        # HTML('Shiny.setInputValue("tableid2", NULL);')
        print(input$tableid2)
     }) 

    output$test_table_react2 <- renderReactable({
        req(input$tableid1) 
        reactable(
            data = my_data[input$tableid1, ],
            selection = "multiple",
            selectionId = "tableid2",
            onClick = "select",
            defaultSelected = NULL,
            fullWidth = FALSE
        )
    })

})

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:1)

您可以设置一个按钮,以使用reactable::updateReactable重置选定的行。在撰写本文时,您将需要使用devtools::install_github("glin/reactable")安装reactable的github版本以访问updateReactable。

actionButton(inputId = "clear_reactable", label="Clear Selection") #put this in UI part

observeEvent(input$clear_reactable, 
    updateReactable("reactable_id", selected = NA)
)