【发布时间】: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 上看到了其他几个关于此的问题(here、here 和 here),但我似乎无法让他们的答案对我有用。看起来我只需要在 datatable 函数中使用回调,但我不希望它触发,除非按下“解决”按钮。
感谢任何帮助/见解。
【问题讨论】:
-
在这个页面上,他们讨论了行选择:rstudio.github.io/DT/shiny.html,这里也有一个例子:yihui.shinyapps.io/DT-rows。这是你要找的吗?
标签: javascript jquery r datatable shiny