这是一个示例闪亮的应用程序,允许用户下载可编辑的表格。用户可以单击左上角的csv
按钮下载表格。
但是,我在编辑表中的任何单元格后(通过双击任何单元格并修改内容)发现,当我单击csv
按钮,输入文件名并保存时,收到类似以下的警告消息下方:
dataTables warning: table id=DataTables_Table_3 - invalid json response.
For more information about this error, please see http://datatables.net/tn/1
尽管我仍然可以将表另存为csv文件,但警告消息却很烦人。
这仅在我在server=FALSE
函数中添加参数renderDT
之后发生。我需要server=FALSE
的原因是没有这个,该应用程序仅下载文件夹的第一页(保存后丢失所有其余数据)。
另一个问题是编辑单元格后,如果我选中/取消选中某些列,则编辑后的单元格将恢复其原始值。
有人知道如何解决这些问题吗?
非常感谢。
示例闪亮的应用程序如下:
library(shiny)
library(DT)
library(dplyr)
shinyApp(
# UI
ui = fluidPage(DT::dataTableOutput('tbl'),
checkboxGroupInput('datacols',
label='Select Columns:',
choices= c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
selected = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
inline=TRUE )
),
# SERVER
server = function(input, output) {
df = reactiveValues()
observe ({
df$dat = iris %>% select(one_of(input$datacols))
})
# render DT
output$tbl = renderDT(server=FALSE, {
datatable(df$dat,
editable = "cell",
extensions = "Buttons",
options = list(
dom = "Bfrtip", buttons = list("csv")))
})
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]], "tbl")
})
}
)
答案 0 :(得分:1)
那是因为您正在与server = FALSE
一起使用代理。你不应该。做
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]])
})
不是
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]], "tbl")
})
如果要使用server = TRUE
下载整个表格,请参见this discussion。