47

我想从我的应用程序中删除“全局搜索”选项,但保留“列搜索”选项。有任何想法吗?我尝试过不同的参数,比如searching=FALSE, filtering='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")

))

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

在此处输入图像描述

4

5 回答 5

48

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

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

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

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

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

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

来源:

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

于 2017-02-20T16:15:00.970 回答
44

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”是“过滤输入”选项(即搜索选项),通过将“f”移动到另一个 div 或省略它,我们可以移动或禁用搜索栏。您的问题的解决方案可能如下所示:

    datatable(iris, filter="top", selection="multiple", escape=FALSE, 
      options = list(sDom  = '<"top">lrt<"bottom">ip'))
于 2016-02-25T12:17:53.463 回答
24
datatable(iris, filter="top", selection="multiple", escape=FALSE,
options = list(searching = FALSE))
于 2018-01-16T14:27:07.560 回答
6

您必须对 的dom选项采取行动DT::datatable。以下对我来说很好:

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

默认情况下DT::datatabledom = 'lftipr'只需删除'f'过滤器的 which (“搜索”按钮)。

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

于 2020-05-22T09:39:54.147 回答
0

根据@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"),这个命令不适合你。

于 2021-06-03T20:09:20.610 回答