可以通过编辑DT::DataTable来更新响应式数据源吗?以下代码基于this code,不同之处在于x是响应式的。当尝试在observeEvent中更改x时,问题就开始了。
将x设置为响应式的目的是我打算从外部数据库获取它,然后对DT::DataTable进行编辑,以便将其写回到数据库中,以使其与用户所见保持同步(我可以做到这一点 - 它不是问题的一部分)。
将x设置为响应式的目的是我打算从外部数据库获取它,然后对DT::DataTable进行编辑,以便将其写回到数据库中,以使其与用户所见保持同步(我可以做到这一点 - 它不是问题的一部分)。
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DTOutput('x1')
),
server = function(input, output, session) {
x = reactive({
df <- iris
df$Date = Sys.time() + seq_len(nrow(df))
df
})
output$x1 = renderDT(x(), selection = 'none', editable = TRUE)
proxy = dataTableProxy('x1')
observeEvent(input$x1_cell_edit, {
info = input$x1_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
# problem starts here
x()[i, j] <<- isolate(DT::coerceValue(v, x()[i, j]))
replaceData(proxy, x(), resetPaging = FALSE) # important
})
}
)