我有一个脚本,可将数据从Postgres数据库加载到可编辑的DT数据表中。我可以在Shiny应用程序中编辑此表,但无法弄清楚如何保存这些编辑。最终,我需要使用操作按钮将这些编辑保存到我的数据库中。
这是我到目前为止所拥有的:
h3("Double-click to edit values in table"),
DT::dataTableOutput("table"),
actionButton("submitchanges",
label = "Submit Changes")'''
server = function(input, output, session){
#SHOW DATA FROM ENTRY TO BE EDITED
newtable <- reactive({
query1 <- paste0("Random query")
df <- as.data.frame(DBI::dbGetQuery(con1, query1))
newtable <- df
})
###Tracking Changes###
rvs <- reactiveValues(
data = NA #dynamic data object
)
observe({
rvs$data <- newtable
})
output$table <- DT::renderDataTable(
rvs$data, editable = TRUE, rownames = FALSE
)
proxy = dataTableProxy("table")
observe({
DT::replaceData(proxy,rvs$data(), resetPaging = FALSE, clearSelection = "none")
})
observeEvent(input$table_cell_edit, {
rvs$data <<- editData(rvs$data, input$table_cell_edit, resetPaging = FALSE)
})
observeEvent(input$sumbitchanges, {
DBI:: dbWriteTable(con1,SQL('my_schema'), rvs$data, append=T, row.names=F)}
)