1
在数据表中,根据是否选择相应的行,某些值应该会更改。让我头疼的是:当数据更新时,表格被重写,选择消失。Shiny DT :: datatable - 选择行时更改表格内容
我一直在处理这个挑战几个小时,但还没有遇到一个解决方案。大多数时候我在stackoverflow找到解决我的问题的解决方案,但这次我没有。
在下面的例子中,最后一列应该显示行的选择状态。我试图跟踪选定的行,并在表重写时预先选择它们。但我无法弄清楚如何使它工作。该代码不起作用,但(希望)显示我需要什么。
library(shiny)
library(DT)
mymtcars = mtcars[1:5, 1:2]
runApp(
list(ui = fluidPage(DT::dataTableOutput("mytable")),
server = function(input, output, session) {
rowSelect <- reactive({
a <- rep(FALSE,5)
a[input$mytable_rows_selected] <- TRUE
return(a)
})
output$mytable = DT::renderDataTable(
cbind(mymtcars, v=rowSelect()),
options = list(dom="t",
ordering=FALSE),
selection=list(mode='multiple',
selected=(1:5)[rowSelect()],
target='row')
)
})
)
顺便说一句,不太优雅,但也有可能的方法是增加复选框,而不是数据表行选择机制的一列。我也尝试过,但有类似的问题。一切都按照我想要的方式实现,直到我将反应性列添加到我的数据中。
对不起,我不能投你的答案有用,因为我的名声太低:-(也许你也知道如何启动表的所有生产线selcted ? – Hans
@Hans在数据表中应该有一个选项,比如'selected =“all”' – PoGibas
这是非常棘手的,因为这个选项已经被用于记住之前的选择(在表重写之前)解释“选择”为“未选中”,反之亦然,让'v =!rowSelect()',但我认为这将更优雅,而不是“欺骗”这种方式,但无论如何,非常感谢你的答案h大大地帮助我。 – Hans