闪亮:使编辑在可编辑数据表中的页面之间持久保存

时间:2020-07-01 09:14:56

标签: r shiny dt shinyapps

我有一个可编辑的数据表,其分页如下:

d1 = file.df
output$file.df_data<-DT::renderDataTable(
      d1,selection = 'none', editable = list(target = "cell", disable = list(columns = c(which(names(d1) != "product_type")-1))), 
      rownames = FALSE,
      extensions = 'Buttons',
      
      options = list(
        paging = TRUE,
        searching = TRUE,
        fixedColumns = TRUE,
        autoWidth = TRUE,
        ordering = TRUE,
        dom = 'Bfrtip',
        buttons = c('csv', 'excel')
      ),
      
      class = "display"
    )

当我在当前页面上进行编辑时,移至其他页面,然后返回到上一页,我在该页面上所做的编辑将消失。如何使修改在页面中持久存在?

以下是我用来观察编辑的代码-

observeEvent(input$file.df_data_cell_edit, {
      d1[input$file.df_data_cell_edit$row,input$file.df_data_cell_edit$col+1] <<- input$file.df_data_cell_edit$value
    })

enter image description here

1 个答案:

答案 0 :(得分:0)

您必须使用代理和editData函数:

library(shiny)
library(DT)

ui <- basicPage(
  br(),
  DTOutput("dtable")
)

server <- function(input, output, session){
  
  dat <- iris
  
  output[["dtable"]] <- renderDT({
    datatable(dat, editable = TRUE)
  })
  
  proxy <- dataTableProxy("dtable")
  
  observeEvent(input[["dtable_cell_edit"]], {
    info <- input[["dtable_cell_edit"]]
    dat <<- editData(dat, info, proxy)
  })
  
}

shinyApp(ui, server)