我有以下示例应用程序(下面的代码)。我们的想法是,如果用户选择第二列(索引为1),则选择将转到第三列(索引为2),因为我不希望用户能够选择第二列(据我所知,没有内置的方法来阻止用户选择DT中的特定列。)
问题在于selectRows(tableProxy, c(2)
有效(行选择的一个简单示例),selectColumns(tableProxy, c(2))
仅取消选择当前选定的列,而不选择第三列。
我的语法有问题,还是这个错误?如果是错误,是否有解决方法?
可再现的例子:
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
fluidRow(
tags$div(title = "Iris table",
DT::dataTableOutput("irisTable"))
)
)
# Define server logic required to draw a table
server <- function(input, output) {
output$irisTable <- DT::renderDT(datatable(head(iris, 20), options = list(paging = FALSE, searching = FALSE),
rownames = FALSE,
selection = list(target = 'row+column', mode='single', selected = list(rows = c(NULL), cols = c(2)))
) %>%
formatStyle(0, target= 'row',color = 'black',
lineHeight='70%', padding = '3px 3px', fontSize = '80%')
)
tableProxy <- dataTableProxy("irisTable")
observeEvent(input$irisTable_columns_selected, {
if (input$irisTable_columns_selected == 1) {
#tableProxy %>% selectColumns(2)
selectRows(tableProxy, c(2))
selectColumns(tableProxy, c(2))
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
更新:我已经尝试了上面的示例代码发布here(转换为使用单个文件Shiny应用程序),我有同样的问题。我重新安装了DT软件包,但它并没有解决问题。
答案 0 :(得分:0)
这是DT的一个错误,应该通过PR rstudio/DT#528修复。您可以通过调用devtools::install_github("rstudio/DT")
安装开发版本来测试它。