You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏DT::datatable列名旁的排序箭头?

隐藏DT::datatable()列名称旁的排序箭头的方法

有两种常见实现方式,根据你的需求选择:

方式一:完全禁用排序功能(箭头直接消失)

如果不需要表格的排序功能,直接在datatable()的options参数里关闭排序即可,代码修改如下:

## app.R ##
library(shiny)
library(shinydashboard)
library(DT)  # 注意要加载DT包,原代码漏了

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    datatableOutput("table")
  )
)

server <- function(input, output) { 
  output$table <- renderDataTable({ 
    datatable(iris,  # 原代码里的"iris"要去掉引号,否则会把字符串当成数据
              options = list(ordering = FALSE))  # 关闭排序,箭头直接消失
  })
}

shinyApp(ui, server)

方式二:保留排序功能,但隐藏箭头

如果需要保留排序功能,只是不想显示箭头,可以通过自定义CSS实现:

方法1:在datatable()里直接添加回调处理

## app.R ##
library(shiny)
library(shinydashboard)
library(DT)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    datatableOutput("table")
  )
)

server <- function(input, output) { 
  output$table <- renderDataTable({ 
    datatable(iris,
              callback = JS("
                $('table.dataTable thead th').removeClass('sorting sorting_asc sorting_desc');
              ")
    )
  })
}

shinyApp(ui, server)

方法2:在UI里添加全局CSS(作用于所有DT表格)

## app.R ##
library(shiny)
library(shinydashboard)
library(DT)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    tags$head(
      tags$style(HTML("
        table.dataTable thead th.sorting,
        table.dataTable thead th.sorting_asc,
        table.dataTable thead th.sorting_desc {
          background-image: none !important;
        }
      "))
    ),
    datatableOutput("table")
  )
)

server <- function(input, output) { 
  output$table <- renderDataTable({ 
    datatable(iris)
  })
}

shinyApp(ui, server)

说明:第二种方式里的CSS是通过移除排序箭头的背景图实现隐藏,点击列名依然可以触发排序,只是看不到箭头图标。

内容的提问来源于stack exchange,提问作者firmo23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:10:22