gpt4 book ai didi

r - Shiny 的数据表 : Disable row selection for certain rows

转载 作者:行者123 更新时间:2023-12-03 14:34:27 25 4
gpt4 key购买 nike

我正在尝试确定 shiny 是否可能DataTable对某些行禁用行选择。

使用 selection DT::datatable 的参数我可以预先选择行,确定用户是选择行还是列或两者,并完全禁用选择,但我不清楚是否可以指示要排除的特定行。这可能吗?

问候

最佳答案

Select你可以做的扩展:

library(DT)
library(shiny)

dat <- iris[1:17,]

rowCallback <- c(
"function(row, data, displayNum, displayIndex){",
" var indices = [0, 2, 4, 15];",
" if(indices.indexOf(displayIndex) > -1){",
" $(row).find('td').addClass('notselectable');",
" }",
"}"
)

shinyApp(
ui = fluidPage(
DTOutput("table")
),
server = function(input, output, session) {
output[["table"]] <- renderDT({
dat %>%
datatable(options = list(
rowCallback = JS(rowCallback),
select = list(style = "multi", selector = "td:not(.notselectable)")
),
extensions = "Select", selection = "none"
)
}, server = FALSE)
}
)

但是,如果您需要 input$table_rows_selected 中所选行的索引,你必须用 JavaScript 编码:
callback <- c(
"var id = $(table.table().node()).closest('.datatables').attr('id');",
"table.on('click', 'tbody', function(){",
" setTimeout(function(){",
" var indexes = table.rows({selected:true}).indexes();",
" var indices = Array(indexes.length);",
" for(var i = 0; i < indices.length; ++i){",
" indices[i] = indexes[i];",
" }",
" Shiny.setInputValue(id + '_rows_selected', indices);",
" }, 0);",
"});"
)

shinyApp(
ui = fluidPage(
DTOutput("table")
),
server = function(input, output, session) {
output[["table"]] <- renderDT({
dat %>%
datatable(
callback = JS(callback),
options = list(
rowCallback = JS(rowCallback),
select = list(style = "multi", selector = "td:not(.notselectable)")
),
extensions = "Select", selection = "none"
)
}, server = FALSE)
observe({
print(input[["table_rows_selected"]])
})
}
)

enter image description here

关于r - Shiny 的数据表 : Disable row selection for certain rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35490910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com