Javascript 更改drawCallback DataTables中行的背景

Javascript 更改drawCallback DataTables中行的背景,javascript,jquery,datatable,Javascript,Jquery,Datatable,如何更改drawCallback中单元格中具有特定值的行的背景 $(table_id).DataTable({ //... "drawCallback": function (settings) { // here for each row, if row['type'] != "" then row.bgcolor ="yellow" }, 这是呈现我的表的完整代码段: $(table_id).DataTable({

如何更改drawCallback中单元格中具有特定值的行的背景

 $(table_id).DataTable({
    //...
    "drawCallback": function (settings) {
             // here for each row, if row['type'] != "" then row.bgcolor ="yellow"
        },
这是呈现我的表的完整代码段:

 $(table_id).DataTable({
        "order": [[0, "desc"]],
        serverSide: true,
        "processing": true,
        rowId: 'MessageID',
        ajax: {
            url: '/Controller/myRoute',
            type: 'POST',
            data: {table_id: table_id},
        },
        "initComplete": function( settings, json ) {

        },
        "createdRow": function (row, data, index) {
            console.log("data is" + data);
        },
        columns: [
           {
               data: "Date",
               "sortable": true,
               "render": function (data) {
                   var formatted = data;
                   if (data.indexOf("/Date(") !== -1) {
                       var date = new Date(parseInt(data.replace("/Date(", "").replace(")/", ""), 10));
                       formatted = date.toString('dd/MM/yyyy HH:mm:ss');
                   }
                   return formatted;
               }
           },
           { data: "Message_id"},
           { data: "From_id"},
           { data: "Message_text" },
        ]
    });
    } 
});

在/Controller/MyRoute中,我有一段代码,可以从数据库中检索10个对象,并将它们作为JSON返回。

我在另一个回调中使用以下解决方案:

JavaScript:

 "createdRow": function (row, data, index) {
            if (data.type !== '') {
                $(row).addClass('colored-row');
            }
        }
然后使用css设置样式:

.colored-row{background-color:yellow;}

使用
createdRow
回调:

$(文档).ready(函数(){
$(“#示例”).dataTable({“sPaginationType”:“完整的数字”,
“createdRow”:函数(tr、TDSCOContent){
如果(TDS内容[4]='A'){
tr.style.backgroundColor='红色';
}
}});
});

行颜色
渲染引擎
浏览器
月台
引擎版本
CSS等级
三叉戟
互联网
浏览器4.0
赢得95分+
4.
X
三叉戟
互联网
浏览器5.0
赢得95分+
5.
C
三叉戟
互联网
探索者5.5
赢得95分+
5.5
A.
三叉戟
互联网
探险家6
赢98+
6.
A.
急板地
歌剧7.0
Win 95+/OSX.1+
-
A.
急板地
歌剧7.5
Win 95+/OSX.2+
-
A.
急板地
歌剧8.0
Win 95+/OSX.2+
-
A.
急板地
歌剧8.5
Win 95+/OSX.2+
-
A.
急板地
歌剧9.0
Win95+/OSX.3+
-
A.
急板地
歌剧9.2
Win 88+/OSX.3+
-
A.
急板地
歌剧9.5
Win 88+/OSX.3+
-
A.
急板地
Wii的歌剧
Wii
-
A.
急板地
诺基亚N800
N800
-
A.
急板地
任天堂DS浏览器
任天堂
8.5
C/A1
KHTML
Konqurer 3.1
KDE 3.1
3.1
C
KHTML
孔奎罗3.3
KDE 3.3
3.3
A.
KHTML
孔奎罗3.5
KDE 3.5
3.5
A.
塔斯曼
Internet Explorer 4.5
Mac OS 8-9
-
X
塔斯曼
Internet Explorer 5.1
Mac OS 7.6-9
1.
C
塔斯曼
Internet Explorer 5.2
Mac OS 8-X
1.
C
杂项
NetFront 3.1
嵌入式设备
-
C
杂项
NetFront 3.4
嵌入式设备
-
A.
杂项
迪洛0.8
嵌入式设备
-
X
杂项
链接
纯文本
-
X
杂项
猞猁
纯文本
-
X
杂项
IE手机
Windows Mobile 6
-
C
杂项
PSP浏览器
PSP
-
C
其他浏览器
所有其他
-
-
U

我知道这篇文章已经有几年历史了。但我也在寻找解决方案,在这里偶然发现了。我能找到答案,我想和大家分享我的答案

$(table_id).DataTable({
//...
"drawCallback": function (e) {
    var api = this.api();
    for (var i = 0; api.rows().count() > i; i++) {
        var rowData = api.row(i).data();
        var rowNode = api.row(i).node();
        var cellNode = api.cell(i, 1).node(); // Can apply same logic to just a cell 
                                 // want specific cell to be bolded or some other style --cell(row, column)
        if (rowData.type != "") {
            $(rowNode).addClass("row-attention");
            $(cellNode).addClass("cell-attention");
        } else { // remove the class in case it was previously added
            $(rowNode).removeClass("row-attention");
            $(cellNode).removeClass("cell-attention");
        }
    }
},
和下面的样式。我个人需要这个!重要但可能不需要,这取决于样式表的顺序

.row-attention {
    background-color: #FFFF00 !important;
}

.cell-attention {
    font-weight: bold;
}

嘿,Gudz,我必须在drawCallback中执行此操作,因为我的datatable使用ajax检索数据服务器端,每次添加新行时,我都会触发表上的ajax.reload,并为我检索到的所有行调用createdRow回调,这不是我试图实现的行为……我需要在绘制表后运行一些东西,以便突出显示具有特定值的行……您能用ajax提供代码片段吗例子?我确信有一种方法可以使用
createdRow
回调,方法是将ajax调用移动到另一个地方或类似的地方