删除 'search' 选项但保留 'search columns' 选项

Remove 'search' option but leave 'search columns' option

我想从我的应用程序中删除 'global search' 选项,但保留 'column search' 选项。有任何想法吗?我已经尝试了不同的参数,例如 searching=FALSE, filtering='none'... None ,它可以正常工作。

我的代码:

server.R:

library("shiny")
library("DT")

data(iris)

shinyServer(function(input, output) {

    output$tabelka <- DT::renderDataTable({

        datatable(iris, filter="top", selection="multiple", escape=FALSE)

    })

})

ui.R

library("shiny")
library("DT")

shinyUI(fluidPage(

    DT::dataTableOutput("tabelka")

))

以及有助于理解我的问题的图片:

DT 选项需要作为列表传递。此外,通过使用 sDom 初始化变量,可以指定 DOM 控件的放置位置。标准设置如下所示:

    datatable(iris, filter="top", selection="multiple", escape=FALSE, 
      options = list(sDom  = '<"top">flrt<"bottom">ip'))

语法有点古怪,但基本上上面说的是 f、l、r 和 t 选项要放在顶部 div,i 和 p 选项放在底部 div.请参阅 http://legacy.datatables.net/usage/options 上的文档以获得更详尽的解释。

无论如何,"f" 是 "Filtering input" 选项(即搜索选项),通过将 "f" 移动到另一个 div 或省略它,我们可以移动或禁用它搜索栏。您的问题的解决方案可能如下所示:

    datatable(iris, filter="top", selection="multiple", escape=FALSE, 
      options = list(sDom  = '<"top">lrt<"bottom">ip'))

稍微简单的语法,对于仍在寻找的其他人:

datatable(head(iris), options = list(dom = 't'), filter = list(position = "top"))

其他选项。要仅显示 table,请使用 dom = 't':

datatable(head(iris), options = list(dom = 't'))

显示table和过滤(搜索框),默认设置:

datatable(head(iris), options = list(dom = 'ft'))

来源:

https://rstudio.github.io/DT/options.html

datatable(iris, filter="top", selection="multiple", escape=FALSE,
options = list(searching = FALSE))

您必须根据 DT::datatabledom 选项采取行动。以下对我来说很好用:

datatable(iris, filter="top", selection="multiple", escape=FALSE, options = list(dom = 'ltipr'))

默认情况下 DT::datatabledom = 'lftipr',只需删除过滤器的 'f'("search" 按钮)。

在此处了解有关 dom 的更多信息: https://datatables.net/reference/option/dom

根据@Alex Nevsky 的评论,他的解决方案最适合我!我尝试了@Pewi 解决方案,但它删除了我的下载按钮。

我用你的例子试过bFilter=0,它完全有效!

library("shiny")
library("DT")

data(iris)

ui <- fluidPage(
  
  DT::dataTableOutput("tabelka")
  
)


server <- function(input, output) {
  
  output$tabelka <- DT::renderDataTable({
    
    datatable(iris, 
              filter="top", 
              selection="multiple", 
              escape=FALSE,
              options = list(bFilter=0))
  })
}


shinyApp(ui=ui, server=server)

警告,如果你想过滤你的数据帧(filter="top"),这个命令不适合你。