【发布时间】:2018-11-01 08:45:03
【问题描述】:
是否可以通过编辑 DT::DataTable 来更新响应式数据源?下面的代码基于this code,其中 x 变为响应式。当尝试在 observeEvent 中更改 x 时,问题就开始了。
使用 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
})
}
)
【问题讨论】:
-
我想你想看看包handsontable