首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Reactable.getState从闪亮仪表板的嵌套可达表中获取数据

使用Reactable.getState从闪亮仪表板的嵌套可达表中获取数据
EN

Stack Overflow用户
提问于 2022-09-05 08:10:14
回答 1查看 58关注 0票数 0

我有一个用shinyreactable包创建的仪表板。我想用Reactable.getState将表中显示的数据下载到一个Excel文件中,问题是,只有在内部表被展开时,我才能获得它们的数据。

下面的示例显示了第一行内表的此问题。

如果单击Get数据,它将显示NULL。

如果展开第一行并单击Get data,它将显示内表的数据。

有没有一种方法可以获得内部表的数据而不展开它?

代码语言:javascript
复制
library(shiny)
library(reactable)
library(jsonlite)

data <- as.data.frame(unique(MASS::Cars93[, 1]))  

registerInputHandler(
  "xx",
  function(data, ...){
    fromJSON(toJSON(data))
  },
  force = TRUE
)

ui <- fluidPage(
  fluidRow(
    column(
      7,
      tags$button(
        "Get data",
        onclick = '
          var state = Reactable.getState("cars1");
          Shiny.setInputValue("dat:xx", state.sortedData);
        '
      ),
      reactableOutput("cars")
    ),
    column(
      5,
      verbatimTextOutput("data")
    )
  )
)

server <- function(input, output){
  output$cars <- renderReactable({
    reactable(data, details = function(index){       
      part_data <- MASS::Cars93[MASS::Cars93[, 1] == data[index, 1], 2:5]                       
      htmltools::div(style = "padding: 1rem",
                     reactable(part_data, outlined = TRUE, elementId = paste0('cars', index))
      )},  filterable = TRUE)
  })

  output$data <- renderPrint({
    input$dat
  })
}

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-12 07:38:54

您可以在Reactable.toggleAllRowsExpanded("cars")代码中执行JavaScript来展开行,然后将表发送到闪亮的服务器,然后折叠行:

代码语言:javascript
复制
    onclick = '
      Reactable.toggleAllRowsExpanded("cars");
      var state = Reactable.getState("cars1");
      Shiny.setInputValue("dat:xx", state.sortedData);
      Reactable.toggleAllRowsExpanded("cars");
    '
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73606333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档