Вот пример блестящего приложения, которое позволяет пользователю загружать редактируемые таблицы. Пользователь может нажать на кнопку 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")
})
}
)