DT 数据表中带有条纹行的固定列

问题描述 投票:0回答:1

我正在尝试生成一个具有固定列和条纹行的 DT::datatable。这是我的代码:

library(DT)

rowCallback <- paste0(
    "function(row, data, num, index){",
    "  var $row = $(row);",
    "  if($row.hasClass('even')){",
    "    $row.css('background-color', 'white');",
    "  }else{",
    "    $row.css('background-color', 'blue');",
    "  }",
    "}"
  )

datatable(
  mtcars,
  extensions = c("FixedColumns"),
  options = list(
    fixedColumns = list(leftColumns = 2),
    paging = FALSE,
    scrollX = TRUE,
    scrollY = "400px",
    rowCallback = DT::JS(rowCallback)
  )
)

不幸的是,固定行部分不会出现条纹,而行的移动部分会变为蓝色(如预期)。我不太擅长JS,所以错误可能出在上面的JS插入上?这是this已回答问题的后续问题。

javascript r datatables dt
1个回答
0
投票

问题是您为

row
设置了一个样式,该样式会被所有没有样式属性的子节点继承或传递给所有子节点。但是,固定列已经具有
style
属性,因此不会继承行的样式集。解决这个问题的一种选择是设置子节点的样式。

library(DT)

rowCallback <- paste0(
  "function(row, data, num, index){",
  "  var $row = $(row);",
  "  if($row.hasClass('even')){",
  "    $row.children().css('background-color', 'white');",
  "  }else{",
  "    $row.children().css('background-color', 'blue');",
  "  }",
  "}"
)

datatable(
  mtcars,
  extensions = c("FixedColumns"),
  options = list(
    fixedColumns = list(leftColumns = 2),
    paging = FALSE,
    scrollX = TRUE,
    scrollY = "400px",
    rowCallback = DT::JS(rowCallback)
  )
)
© www.soinside.com 2019 - 2024. All rights reserved.