修改闪亮的数据表搜索

Modify shiny datatable search

我需要更改 Shiny 在应用呈现数据表时默认显示在浏览器中的搜索输入。 搜索输入查找数据表中的数据,并根据用户的输入过滤显示相应的信息。 问题是 Shiny 默认实现了它。

我想实现类似搜索的输入,但我希望分页显示用户在输入中写入的页面,而不是过滤数据。

有什么想法吗?

有关快速解决方案,请参见下文。我隐藏了当前的功能并在上面实现了一个新的功能。

library(DT)
shinyApp(
  ui = fluidPage(
    tags$head(
      # hides the default search functionality
      tags$style(
        HTML(".dataTables_filter, .dataTables_info { display: none; }")
      )
    ),
    fluidRow(
      column(10, 
             ""
      ), 
      column(2,              
             # adding new page filter
             numericInput("page", "Page", 1, min = 1)
      ),
      column(12,
             dataTableOutput('table')
      )
    )
  ),
  server = function(input, output) {

    output$table <- renderDataTable(iris, options = list(pageLength = 5))

    # using new page filter
    observeEvent(input$page, {
      dataTableProxy("table") %>% selectPage(input$page)
    })
  }
)

当然,替换实际的 DOM 元素会很好。然后 javascript 将是要走的路。您可以找到元素并覆盖功能,也可以删除它并替换它。一个好的起点是:https://datatables.net/examples/basic_init/dom.html。但我认为就所需时间而言,这可能有点矫枉过正。