如何根据jQuery数据表中的列值设置表行的颜色

Posted

技术标签:

【中文标题】如何根据jQuery数据表中的列值设置表行的颜色【英文标题】:How to set color for table rows based on column value in jQuery data table 【发布时间】:2013-04-27 12:50:28 【问题描述】:

我正在使用 jQuery 数据表。我有如下数据

Column1 Column2 Column3
-----------------------
 AAA    BBB     CCC
 AAA    GGG     YYY
 BBB    ooo     LLL

现在在第一列的前 2 行我有相同的值AAA。我想给那些应用一些颜色 行。然后第三行的另一种颜色。像这样我有 30 条记录。是否可以这样做。如果可能的话,我该怎么做。我正在使用 jQuery 数据表。提前致谢..

【问题讨论】:

【参考方案1】:

使用fnRowCallback(或更新的rowCallback)来实现这一点

$('#example').dataTable(
    "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) 
        switch(aData[0])
            case 'AAAA':
                $(nRow).css('color', 'red')
                break;
            case 'BBBB':
                $(nRow).css('color', 'green')
                break;
            case 'CCCC':
                $(nRow).css('color', 'blue')
                break;
        
    
);

演示:Fiddle

【讨论】:

@PSR 无论如何都应该有一些业务逻辑来说明要为值应用什么颜色 感谢@ArunPJohny,但我认为return nRow 在此回调函数中是必需的,否则,数据表会引发异常,例如“fnRowCallBack 未返回节点” 请考虑根据@Herve MARTIN 的答案更新您的答案。新 API 按名称访问列数据。【参考方案2】:

API 最近发生了变化,您现在应该使用 aData['Column1'] 而不是 aData[0]

【讨论】:

【参考方案3】:

createdRow 功能已在 v 1.10 中添加

此回调在创建 TR 元素时执行(并且所有 TD 子元素都已插入),或者如果使用 DOM 源进行注册,则允许对 TR 元素进行操作。

这在使用延迟渲染 (deferRender) 或服务器端处理 (serverSide) 时特别有用,因此您可以在创建行时添加事件、类名信息或以其他方式格式化行。

https://datatables.net/reference/option/createdRow

例子:

    $('#example').dataTable(
        // ...
        "createdRow": function( row, data, dataIndex ) 
            if ( data["column_index"] == "column_value" ) 
                $( row ).css( "background-color", "Orange" );
                $( row ).addClass( "warning" );
            
        ,
        // ...
    );

【讨论】:

这对我有用,但我必须将“column_index”指定为列名(字符串)而不是索引(int)。

以上是关于如何根据jQuery数据表中的列值设置表行的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在jQuery中获取对具有特定值的表行的引用

Laravel/VueJs。如何根据传入的列值显示不同颜色的按钮?

如何根据数据框中的列值获取特定的行数[重复]

如何根据 azure databricks 中的列值将静态值传递给动态值

根据第三个表中的列值删除表中的行

根据列值更改 JTable 行的背景颜色