我有一个带有可编辑 DT 表的 Shiny 应用程序。一切都在桌面上完美运行:我双击一个单元格,编辑值,该值在后台处理,整个表格得到适当更新。
但是,在 Android 版 Chrome 上,双击似乎不是一个选项,因此我无法编辑表格中的单元格。
经过大量寻找解决方案后,我尝试添加回调以在单击时触发双击,但没有任何效果。我在下面给出了一个最小的例子。
library(shiny)
library(DT)
ui <- fluidPage( mainPanel( DTOutput("table") ) )
server <- function(input, output, session) {
NumDays <- 14
DayNum <- seq_len(NumDays)
DF <- data.frame(Day=DayNum, Week=((DayNum-1) %/% 7 + 1), Steps=rep(0, NumDays), row.names=NULL)
proxy <- dataTableProxy('table')
js <- "table.on('click', 'tr', function() {
table.cell(this).trigger('dblclick.dt');
});"
output$table <- renderDT(datatable(DF, rownames = FALSE, selection = list(mode = 'none'), editable = list(target='cell'), options = list(scrollY = 600, searching = FALSE, paging=FALSE, ordering=FALSE, info=FALSE), callback = JS(js)))
proxy <- dataTableProxy('table')
observeEvent(input$table_cell_edit, {
info <- input$table_cell_edit
i <- info$row; j <- info$col+1; v <- info$value
currentvalue <- abs(as.numeric(v))
DF[i, j] <<- currentvalue + 10
replaceData(proxy, DF, rownames = FALSE)
})
}
shinyApp(ui = ui, server = server)
最佳答案
我只是用一点 jquery 调整了你的示例并让它工作 - 另请注意我将“tr”更改为“td”:
library(shiny)
library(DT)
ui <- fluidPage( mainPanel( DTOutput("table") ) )
server <- function(input, output, session) {
NumDays <- 14
DayNum <- seq_len(NumDays)
DF <- data.frame(Day=DayNum, Week=((DayNum-1) %/% 7 + 1), Steps=rep(0, NumDays), row.names=NULL)
proxy <- dataTableProxy('table')
js <- "table.on('click', 'td', function() {
$(this).dblclick();
});"
output$table <- renderDT(datatable(DF, rownames = FALSE, selection = list(mode = 'none'), editable = list(target='cell'), options = list(scrollY = 600, searching = FALSE, paging=FALSE, ordering=FALSE, info=FALSE), callback = JS(js)))
proxy <- dataTableProxy('table')
observeEvent(input$table_cell_edit, {
info <- input$table_cell_edit
i <- info$row; j <- info$col+1; v <- info$value
currentvalue <- abs(as.numeric(v))
DF[i, j] <<- currentvalue + 10
replaceData(proxy, DF, rownames = FALSE)
})
}
shinyApp(ui = ui, server = server)
希望这有帮助
关于r - 如何在 R Shiny DT 数据表中单击触发编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66262809/