簡體   English   中英

如何使用Shiny服務器端的DataTable行的“ selected”類?

[英]How to use the “selected” class of DataTable rows on server side of Shiny?

假設我有以下應用:

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”,然后單擊“解決”按鈕,並讓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上還看到了另外兩個問題( 這里這里這里 ),但是我似乎無法獲得他們為我工作的答案。 看來我只需要在datatable函數中使用回調,但是除非按下“解決”按鈕,否則我不希望它觸發。

任何幫助/見解表示贊賞。

在此頁面上,他們談論行選擇:rstudio.github.io/DT/shiny.html,這里還有一個示例:yihui.shinyapps.io/DT-rows。 這是你想要的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM