Shiny中DT表格自定义CSS:如何按指定列值整行着色?
解决DT表格对照行背景色覆盖问题
当然可以直接在tags$style里指定对照行的背景色,这是解决全局!important样式冲突的有效方法——只要写优先级更高的CSS选择器并加上!important就能覆盖原有样式。
两种实现方式:
按行号指定(前两行):
如果确定阳性/阴性对照固定是表格前两行,直接用CSS的:nth-child选择器定位,代码示例:tags$style(HTML(" /* 给DT表格的第1、2行设置背景色 */ .dataTable tbody tr:nth-child(1), .dataTable tbody tr:nth-child(2) { background-color: #d4edda !important; /* 替换成你需要的颜色 */ } "))按内容匹配(更灵活):
如果对照行位置不固定,可通过内容文本匹配,用:contains选择器:tags$style(HTML(" /* 匹配包含阳性/阴性对照的行 */ .dataTable tbody tr:contains('Positive control'), .dataTable tbody tr:contains('Negative control') { background-color: #fff3cd !important; /* 替换成你需要的颜色 */ } "))
为什么这个方法有效?
全局样式的!important优先级高,但我们的选择器.dataTable tbody tr比单纯的tr更具体,再加上自己的!important,就能直接覆盖原有背景样式,不用纠结formatStyle或styleRow的局限性。
另外提一句你之前styleRow()的NA错误:大概率是因为数据里存在NA值,处理行样式时没做判断,比如可以用ifelse先把NA转换成默认样式值,但既然用CSS能直接解决,这个方法更省心。
内容的提问来源于stack exchange,提问作者edv
相关产品推荐
相关产品推荐

