闪亮 DT::datatable - 选中行时更改 table 内容
Shiny DT::datatable - Change table content when lines are selected
在数据table 中,某些值应该根据相应行是否被 select 编辑而改变。让我头疼的是以下内容:更新数据时 table 被重新写入,并且 selection 消失了。
我已经为这个挑战努力了几个小时,但还没有找到解决方案。大多数时候我在 Whosebug 上找到解决问题的方法,但这次我没有。
在下面的示例中,最后一列应该显示该行的 select离子状态。我试图跟踪 selected 行并在重写 table 时预先 select 它们。但是我不知道如何让它工作;代码不起作用,但(希望)显示我需要的东西。
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')
)
})
)
顺便说一下,一种不太优雅但也可行的方法是添加一列复选框而不是数据table 行selection 机制。我也尝试过,但遇到了类似的问题。一切都按照我想要的方式进行,直到我向数据添加反应列。
你几乎做对了!你必须用 datatable
:
包裹你的 table
output$mytable <- DT::renderDataTable(
datatable(cbind(mymtcars, v=rowSelect()),
options = list(dom = "t",ordering = FALSE),
selection = list(mode = "multiple",
selected =(1:5)[rowSelect()],
target = "row"))
)
在数据table 中,某些值应该根据相应行是否被 select 编辑而改变。让我头疼的是以下内容:更新数据时 table 被重新写入,并且 selection 消失了。
我已经为这个挑战努力了几个小时,但还没有找到解决方案。大多数时候我在 Whosebug 上找到解决问题的方法,但这次我没有。
在下面的示例中,最后一列应该显示该行的 select离子状态。我试图跟踪 selected 行并在重写 table 时预先 select 它们。但是我不知道如何让它工作;代码不起作用,但(希望)显示我需要的东西。
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')
)
})
)
顺便说一下,一种不太优雅但也可行的方法是添加一列复选框而不是数据table 行selection 机制。我也尝试过,但遇到了类似的问题。一切都按照我想要的方式进行,直到我向数据添加反应列。
你几乎做对了!你必须用 datatable
:
output$mytable <- DT::renderDataTable(
datatable(cbind(mymtcars, v=rowSelect()),
options = list(dom = "t",ordering = FALSE),
selection = list(mode = "multiple",
selected =(1:5)[rowSelect()],
target = "row"))
)