根据单元格值DataTable更改行背景颜色

Che*_*ver 27 datatable jquery

我正在使用DataTable插件来显示一些记录.我有3行,名称,日期,金额.我希望行的背景颜色根据amount列中的特定值进行更改.

这是我的代码:

<script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
    var table = $('#tid_css').DataTable({
      'iDisplayLength': 100,
      "bFilter": false,
      "aaSorting": [
        [2, "desc"]
      ]
    });
  });
</script>
Run Code Online (Sandbox Code Playgroud)

作为测试,我在代码旁边添加了下面的代码但是收到错误" DataTables警告:table id = tid_css - 无法重新初始化DataTable "

<script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
    $('#tid_css').dataTable({
      "fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
        if (aData[2] == "1") {
          $('td:eq(2)', nRow).html('<b>1</b>');
        }
      }
    });
  });
</script>
Run Code Online (Sandbox Code Playgroud)

使用不同条件的"fnRowCallback",如果金额为1,则颜色为红色,2 =蓝色,3 =蓝色等,这样做有多容易

Che*_*ver 54

好的我能够自己解决这个问题:

$(document).ready(function() {
  $('#tid_css').DataTable({
    "iDisplayLength": 100,
    "bFilter": false,
    "aaSorting": [
      [2, "desc"]
    ],
    "fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
      if (aData[2] == "5") {
        $('td', nRow).css('background-color', 'Red');
      } else if (aData[2] == "4") {
        $('td', nRow).css('background-color', 'Orange');
      }
    }
  });
})
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案对我不起作用.但是,我在Datatables论坛中找到了这个解决方案,并且像一个魅力(也许OP有/有一个旧版本的数据表)... https://datatables.net/forums/discussion/29717/change-row-background -color-根据上 - 值在-某些小区#Comment_79736 (6认同)

dev*_*ate 26

DataTables 1.10+以来的等效语法是rowCallback

"rowCallback": function( row, data, index ) {
    if ( data[2] == "5" )
    {
        $('td', row).css('background-color', 'Red');
    }
    else if ( data[2] == "4" )
    {
        $('td', row).css('background-color', 'Orange');
    }
}
Run Code Online (Sandbox Code Playgroud)

之前的答案之一提到createdRow.在某些情况下,这可能会给出类似的结果,但它不一样.例如,如果draw()在更新行的数据后使用,createdRow则不会运行.它只运行一次. rowCallback将再次运行.

  • 完全同意`rowCallback` (2认同)

gAr*_*Arn 11

自v 1.10起,DataTables具有此功能

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

例:

$('#tid_css').DataTable({
  // ...
  "createdRow": function(row, data, dataIndex) {
    if (data["column_index"] == "column_value") {
      $(row).css("background-color", "Orange");
      $(row).addClass("warning");
    }
  },
  // ...
});
Run Code Online (Sandbox Code Playgroud)

  • 实际上,v 1.10的功能是[rowCallback](https://datatables.net/reference/option/rowCallback)。createdRow在某些情况下可能会给您带来相同的效果,但事实并非如此。 (2认同)

Nor*_*ruz 7

从数据表v1.10.18开始,你应该指定列键而不是索引,它应该是这样的:

rowCallback: function(row, data, index){
            if(data["column_key"] == "ValueHere"){
                $('td', row).css('background-color', 'blue');
            }
        }
Run Code Online (Sandbox Code Playgroud)