DT::datatable固定列行未显示条纹效果的问题排查
解决DT::datatable固定列条纹不生效的问题
问题出在rowCallback仅对主滚动表格的行生效,而FixedColumns生成的固定列是独立的子表格,不会被rowCallback遍历处理。换成drawCallback就能在表格绘制完成后,同时覆盖主表和固定列的所有行。
修改后的代码如下:
library(DT) drawCallback <- paste0( "function(settings){", " // 同时获取主表和固定列表格的所有行", " var allRows = $('#' + settings.sTableId + ' tr, #' + settings.sTableId + '_fixed tr');", " allRows.each(function(index){", " var $row = $(this);", " 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", drawCallback = DT::JS(drawCallback) ) )
关键说明
drawCallback会在表格每次绘制(初始化、滚动、排序等操作后)触发,能覆盖所有表格元素- 通过选择器
#表格ID tr, #表格ID_fixed tr同时选中主表和固定列的行,统一设置背景色 - 保留原逻辑中根据
even类判断行奇偶的规则,保证条纹效果的一致性
内容的提问来源于stack exchange,提问作者yaennu.s
相关产品推荐
相关产品推荐

