【问题标题】:R Shiny DT Row Select and Row Edit CollisionR Shiny DT 行选择和行编辑冲突
【发布时间】:2021-01-16 13:01:07
【问题描述】:

我正在开发一个 Shiny 应用程序,并且正在使用 renderDataTable 向用户显示数据框。现在,用户需要点击表格的一行来提取关于该行的附加信息。同时,我将数据表设置为“行”可编辑。这确实造成了一些问题。为了启动该行的编辑模式,需要双击该行,但多次单击会切换该行的选中状态。

有没有一种方法可以启动行编辑而无需双击或在存在双击时禁用行选择状态?

编辑:这是我对 DT 的调用:

output$image_list = DT::renderDataTable({
    if(!('data.frame' %in% class(values$images))) {
        return(NULL)
    }
    
        datatable(values$images,
                  rowname=FALSE,
                  options=list(columnDefs = list(list(visible=FALSE, targets=c(0, 1, 3, 6)))), 
                  colnames=c('ID', 'Full File Name', 'Filename', 'Directory', 'Range Scale', 'Heading', 'Status'),
                  selection = 'single',
                  editable = list(target='row', disable = list(columns=c(0, 1, 2, 3, 6)))
        ) %>%
            formatStyle('Status', target='row', backgroundColor = styleEqual(c('Incomplete', 'Complete'), c('#FF9999', '#99FF99')))
})

版本信息

Tool | Version
-----|--------
R    | 4.0 
Shiny| 1.5.0 
DT   | 0.15

【问题讨论】:

  • 没有细节很难理解。如何将点击侦听器附加到行?你不能只把它附加到一列吗?

标签: r shiny datatables dt


【解决方案1】:

我不确定是否理解,但也许这会有所帮助。使用下面的应用程序,您只能通过单击不可编辑列中的单元格来选择行。因此,双击可编辑单元格不会触发行选择。不确定这是否有帮助...告诉我什么。

library(shiny)
library(DT)

dat <- iris[1:6,]
nonEditableColumns <- c(3, 4)


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

server <- function(input, output, session) {
  
  output[["dtable"]] <- renderDT({
    datatable(
      dat, 
      extensions = "Select",
      selection = "none",
      editable = list(
        target = "row", 
        disable = list(columns = nonEditableColumns)
      ),
      options = list(
        columnDefs = list(
          list(className = "selectable", targets = nonEditableColumns),
          list(className = "dt-center", targets = "_all")
        ),
        select = list(style = "single",
                      selector = "td.selectable")
      )
    )
  }, server = FALSE)
  
}


shinyApp(ui, server)

【讨论】:

  • 除了行之外还有类似的东西吗?在文档中搜索rowDefs无济于事
猜你喜欢
  • 2015-09-13
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2019-09-05
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多