我正在尝试生成一个具有固定列和条纹行的 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已回答问题的后续问题。
问题是您为
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)
)
)