我正在尝试创建一个Shiny应用程序,该应用程序允许用户编辑数据表,从而保存编辑内容。这是一个最小的示例:
library(shiny)
library(DT)
ui <- fluidPage(
DT::DTOutput('df')
)
server <- function(session, input, output){
df <- data.frame(x = factor(c("A", "B", "C"), levels = c("A", "B", "C")))
output$df <- DT::renderDT(df,
editable = T)
proxy <- dataTableProxy("df")
observeEvent(input$df_cell_edit, {
info <- input$df_cell_edit
str(info)
i <- info$row
j <- info$col
v <- info$value
df[i, j] <<- DT:::coerceValue(v, df[i, j])
replaceData(proxy, df, resetPaging = FALSE)
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
这使我可以编辑内联的值x,但是由于这x是一个因素,因此我想限制用户能够输入的值。理想情况下,我希望使用下拉菜单来完成此操作。使用DT :: datatable和Shiny可以实现此功能吗?
注意:我知道该rhandsontable软件包,但是,如果可能的话,我宁愿使用DT。
replaceData()并使用 RDBMS (SQL Server) 上的数据。Ohio我想使用 id 设置我的数据(和 RDBMS)2。和 replaceData()
没有 replaceData()
我使用下面的这个技巧在 DT 表中添加复选框。它工作得很好,但是当有大量数据时,它在建筑物中非常慢,因为每个复选框的 html 数量非常重要。
我使用下面的这个技巧,类似于上一部分,来编写我的代码。但是我尝试仅基于单元格单击来构建,因为我知道上一部分很慢
预先感谢您的帮助 :)
library(shiny)
library(DT)
library(dplyr)
library(shinyjs)
library(DescTools)
# inspired by /sf/ask/4005092521/#57218361
#
ui <- fluidPage(
useShinyjs(),
tags$head(tags$script(
HTML("
Shiny.addCustomMessageHandler('unbindDT', function(id) { …Run Code Online (Sandbox Code Playgroud)