【问题标题】:How to use the "selected" class of DataTable rows on server side of Shiny?如何在 Shiny 的服务器端使用“选定”类的 DataTable 行?
【发布时间】:2016-04-15 23:58:33
【问题描述】:

假设我有以下应用:

library(shiny)
library(DT)

ui <- fluidPage(
  fluidRow(columns = 12, 
           DT::dataTableOutput("my_table"),
           actionButton("resolve", "Resolve Names"))
)

server <- function(input, output) {
  output$my_table <- DT::renderDataTable({
    dat <- data.frame("Names" = c("Bryan", "Byran", "Allison", "Alison"))
    return(DT::datatable(dat))
  })

  observeEvent(input$resolve, {
    # do some stuff using the selected rows from DT
  })
}

shinyApp(ui = ui, server = server)

我希望能够单击表格中的“Bryan”和“Byran”,然后单击“Resolve”按钮并让 Shiny 使这两个值彼此相等。我不需要帮助如何使值彼此相等,我只需要知道如何从 DT 捕获数据并将其返回到服务器端进行处理。

更具体地说,有没有办法将 JS 值传回服务器?因为我知道我可以使用 JQuery 获取数据,例如(注意,此代码实际上可能不是一个工作示例,但应该明白这一点):

$('#resolve').click(function(){
  var cells = new Array();
  $('#my_table tr').each(function(){
  if ($(this).attr("class")[1] === "selected") {
    cells.push($(this).html());
});

我在 SO 上看到了其他几个关于此的问题(hereherehere),但我似乎无法让他们的答案对我有用。看起来我只需要在 datatable 函数中使用回调,但我不希望它触发,除非按下“解决”按钮。

感谢任何帮助/见解。

【问题讨论】:

标签: javascript jquery r datatable shiny


【解决方案1】:

在这个页面上,他们讨论了行选择:rstudio.github.io/DT/shiny.html 并且在这里也有一个例子:yihui.shinyapps.io/DT-rows。这是你想要的?

【讨论】:

  • 完美!看起来datatable 自动捕获有关选择了哪些行的信息。您可以使用input$tableID_rows_selected 访问它,假设您的表名为“tableID”。感谢您的帮助!
猜你喜欢
  • 2018-02-03
  • 1970-01-01
  • 2021-01-01
  • 2017-12-11
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多