【问题标题】:DataTable highlight empty cellsDataTable 突出显示空单元格
【发布时间】:2021-02-26 05:15:43
【问题描述】:

我正在尝试突出显示 DataTable(包 DT)中的空单元格,以便向表格的用户演示哪些信息仍需要完成。

我尝试使用DT::formatStyle() 函数来实现这一点,然后使用styleInterval() 或styleEqual() 的辅助函数之一,但它们似乎都没有检查空值的功能。

有什么想法可以实现吗?

下面的可重现示例仅以绿色突出显示大于 1 的日期,但并未以红色突出显示空的日期...

start_date <- c("2020-07-01","2020-01-02","2019-10-01",NA,"2019-10-01",NA,"2019-10-01","2019-10-01")
end_date <- c(NA, "2020-12-31","2020-12-31","2020-12-31","2020-12-31","2020-12-31","2020-12-31","2020-12-31")

df <- cbind(start_date, end_date)

DT::datatable(df,
              selection = "single",
              options = list(
                scrollX = TRUE,
                scrollY = TRUE,
                lengthChange = FALSE,
                searching = FALSE,
                initComplete = JS(
                  "function(settings, json) {",
                  "$(this.api().table().container()).css({'font-size': '80%'});",
                  "$(this.api().table().header()).css({'font-size': '100%'});",
                  "}")
              ) 
) %>%
  DT::formatStyle(columns = c("start_date", "end_date"),
                  background = styleInterval(c(NULL, 1), c("red","green")))

【问题讨论】:

  • 请提供数据或其中的一部分。
  • 用一个可重现的例子更新了我的问题
  • 什么是“大于 1”的日期?
  • 这是我尝试检查是否已填充的内容。无论如何,我在我的程序中尝试了您的解决方案,它可以按我的意愿工作,非常感谢您的帮助!

标签: r shiny dt


【解决方案1】:
library(DT)

start_date <- c("2020-07-01","2020-01-02","2019-10-01",NA,"2019-10-01",NA,"2019-10-01","2019-10-01")
end_date <- c(NA, "2020-12-31","2020-12-31","2020-12-31","2020-12-31","2020-12-31","2020-12-31","2020-12-31")

df <- cbind(start_date, end_date)

datatable(df,
          selection = "single",
          options = list(
            scrollX = TRUE,
            scrollY = TRUE,
            lengthChange = FALSE,
            searching = FALSE,
            initComplete = JS(
              "function(settings, json) {",
              "$(this.api().table().container()).css({'font-size': '80%'});",
              "$(this.api().table().header()).css({'font-size': '100%'});",
              "}")
          ) 
) %>% formatStyle(
  columns = c("start_date", "end_date"),
  background = JS('value === null ? "red" : new Date(value) > new Date("2020-01-01") ? "green" : ""'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多