我在我闪亮的应用程序中使用数据表。 我想在搜索按钮附近添加一个按钮。 当我单击按钮时我想调用该函数: observeEvent(input[["btn"]] 这是我的代码:
DT::renderDataTable(rownames = FALSE,
DT::datatable(my_df,extensions = 'Buttons',
options = list(info = FALSE, paging = FALSE,
dom='Bfrtip', buttons= list('copy')
)))
它看起来很棒,但我想要一个调用的常规按钮,而不是复制按钮 这个函数:observeEvent(input[["btn"]] 知道我该怎么做吗?
让我们定义一个自定义按钮。
通过
text
更改按钮标签,更改 setInputValue
中闪亮的输入 ID,将 mydf_btn
更改为您想要的任何内容。
library(shiny)
ui <- fluidPage(
DT::DTOutput("mydf")
)
server <- function(input, output, session) {
output$mydf <- DT::renderDataTable(
DT::datatable(
iris,extensions = 'Buttons', rownames = FALSE,
options = list(
info = FALSE, paging = FALSE, dom='lfBrtip',
buttons= list(
list(
extend = 'collection',
text = 'My Action',
action = DT::JS(
"function() {
var node = this[0].node;
var value = $(node).attr('data-value') || 0;
value ++;
$(node).attr('data-value', value);
Shiny.setInputValue('mydf_btn', value, {priority: 'event'});
}"
)
)
)
)
)
)
observe(print(input$mydf_btn))
}
shinyApp(ui, server)
“全选”和“全选”按钮示例:
output$data_table <- renderDT(
datatable(
iris,
select = 'multiple',
extensions=c(
"Buttons",
),
options = list(
dom = 'Blfrtip',
columnDefs = list(
# hide columns with column_info$Show!='Yes'
# adjusting for Javascript's 0 offset
list(targets = which(column_info$Show!='Yes')-1,
visible = FALSE)
),
buttons = list(
list(
extend = 'collection',
text = 'Select All',
action = DT::JS(
r"(
function() {
var node = this[0].node;
var value = $(node).attr('data-value') || 0;
value ++;
$(node).attr('data-value', value);
Shiny.setInputValue('select_all_btn', value, {priority: 'event'});
}
)"
)
),
list(
extend = 'collection',
text = 'Select None',
action = DT::JS(
r"(
function() {
var node = this[0].node;
var value = $(node).attr('data-value') || 0;
value ++;
$(node).attr('data-value', value);
Shiny.setInputValue('select_none_btn', value, {priority: 'event'});
}
)"
)
),
'copy',
'csv',
'excel',
'print'
)
)
)
observeEvent(
input$select_all_btn,
{
DT::dataTableProxy('data_table') |>
selectRows(selected=1:nrow(project_data()))
}
)
observeEvent(
input$select_none_btn,
{
DT::dataTableProxy('data_table') |>
selectRows(selected=NULL)
}
)