DT::datatable 的条纹

Posted

技术标签:

【中文标题】DT::datatable 的条纹【英文标题】:stripes for DT::datatable 【发布时间】:2015-04-17 16:37:20 【问题描述】:

我希望在下面的代码中得到 datatable 的重复模式,其中 3 行是彩色的,然后是 3 行是白色的,然后又是彩色的……有人可以帮我写代码吗?

另外,在我的 Shiny 应用程序中有几个表格,每个表格可能需要不同的样式。希望能提供一个答案,说明如何将样式绑定到特定表格,以便我可以使用它为其他表格开发其他样式。

require(shiny)
require(DT)

MkDF <- function(nr)  data.frame(value1=1:nr, value2=runif(nr)) 

server <- function(input, output) 
    ds <- MkDF(15)
    output$tbl = DT::renderDataTable( 
        DT::datatable(ds, options=list(info=F, searching=F, paging=F),
            container= htmltools::tags$table(class="stripe row-border"),
            colnames=c("My Value1","My Value2")) %>% formatRound(2,2)
    )


ui <- shinyUI(
    navbarPage("Example",
        tabPanel("DT", fluidRow( column(offset=2, width=4, DT::dataTableOutput('tbl') ) ) )
    )
)

shinyApp(ui=ui, server=server)

【问题讨论】:

【参考方案1】:

您可以尝试使用以下 rowCallback 函数:

DT::datatable(ds,
 options=list(info=F, searching=F, paging=F,
 rowCallback=JS(
  'function(row,data) 
     if($(row)["0"]["_DT_RowIndex"] % 6 <3) 
            $(row).css("background","orange")
   '))) %>% formatRound("value2",2)  

基本上你可以得到 DT 行索引$(row)["0"]["_DT_RowIndex"] 并使用模% 运算符对行着色。

【讨论】:

感谢您的回复。在我的 Shiny 应用程序中,我有 10 多个数据表,每个数据表在多列上使用 formatRound/formatPercentage。 DT 实现(参见link)也以我喜欢的方式处理 NA。是否有可能获得适用于这些格式功能的解决方案? 它实际上与formatRound 函数配合得很好,我编辑了代码 看起来格式函数需要 data 参数才能工作 你知道有没有办法从 Shiny 设置 display 选项?谢谢。 你可以看看this post

以上是关于DT::datatable 的条纹的主要内容,如果未能解决你的问题,请参考以下文章

DT::datatable – 格式化所选列?

Shiny:合并 DT::datatable 中的单元格

如何使水平滚动条在 DT::datatable 中可见

如何在 DT::datatable() 中搜索时停止 xaringan 的键盘快捷键?

没有 pandoc 的 knit DT::datatable

R Shiny 中 DT::datatable() 中冻结标头问题的解决方法