相关疑难解决方法(0)

使用因子变量的下拉选择来编辑Shiny中的数据表

我正在尝试创建一个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。

r shiny dt

6
推荐指数
1
解决办法
659
查看次数

渲染 DT 中单列的下拉列表闪亮但仅在单元格单击时加载并使用 replaceData()

目标

  • 要在 DT 数据表中选择下拉列表,而不是在数据表的构建中,而是在单元格单击上构建,replaceData()并使用 RDBMS (SQL Server) 上的数据。
  • 例如,当我单击 的选定选项时,Ohio我想使用 id 设置我的数据(和 RDBMS)2

问题

  • replaceData()

    • select 的事件是未绑定的。这很奇怪,因为只有我点击的单元格是未绑定的。
    • 所选页面丢失
    • 更新 StateId 有效(但如果我选择另一个原始数据并返回,则无法再次单击)
    • 而且,我认为这是一件积极的事情,选择是在行选择时绘制的
  • 没有 replaceData()

    • 所有事件都已绑定,但我无法更新 DT 数据表中的 StateId
    • 既不在数据中(因此不在 RDMBS SQL 更新中)

还没用

我使用下面的这个技巧在 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)

jquery r datatables shiny dt

5
推荐指数
1
解决办法
743
查看次数

标签 统计

dt ×2

r ×2

shiny ×2

datatables ×1

jquery ×1