向数据表添加常规按钮 - 闪亮的应用程序

问题描述 投票:0回答:2

我在我闪亮的应用程序中使用数据表。 我想在搜索按钮附近添加一个按钮。 当我单击按钮时我想调用该函数: 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"]] 知道我该怎么做吗?

r shiny datatable
2个回答
3
投票

让我们定义一个自定义按钮。

通过

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)

enter image description here


0
投票

“全选”和“全选”按钮示例:

  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)
    }
  )
© www.soinside.com 2019 - 2024. All rights reserved.