[英]Change background of a row in a drawCallback DataTables
如何更改 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 返回的代码。
使用createdRow
回调:
$(document).ready(function() { $('#example').dataTable({"sPaginationType": "full_numbers", "createdRow": function (tr, tdsContent) { if(tdsContent[4] === 'A') { tr.style.backgroundColor = 'red'; } }}); });
<html> <head> <title>Row color</title> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css"> <script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script> <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> </head> <body> <table cellpadding="0" cellspacing="0" border="0" class="dataTable" id="example"> <thead> <tr> <th>Rendering engine</th> <th>Browser</th> <th>Platform(s)</th> <th>Engine version</th> <th>CSS grade</th> </tr> </thead> <tbody> <tr> <td>Trident</td> <td>Internet Explorer 4.0</td> <td>Win 95+</td> <td> 4</td> <td>X</td> </tr> <tr> <td>Trident</td> <td>Internet Explorer 5.0</td> <td>Win 95+</td> <td>5</td> <td>C</td> </tr> <tr> <td>Trident</td> <td>Internet Explorer 5.5</td> <td>Win 95+</td> <td>5.5</td> <td>A</td> </tr> <tr> <td>Trident</td> <td>Internet Explorer 6</td> <td>Win 98+</td> <td>6</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 7.0</td> <td>Win 95+ / OSX.1+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 7.5</td> <td>Win 95+ / OSX.2+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 8.0</td> <td>Win 95+ / OSX.2+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 8.5</td> <td>Win 95+ / OSX.2+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 9.0</td> <td>Win 95+ / OSX.3+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 9.2</td> <td>Win 88+ / OSX.3+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera 9.5</td> <td>Win 88+ / OSX.3+</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Opera for Wii</td> <td>Wii</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Nokia N800</td> <td>N800</td> <td>-</td> <td>A</td> </tr> <tr> <td>Presto</td> <td>Nintendo DS browser</td> <td>Nintendo DS</td> <td>8.5</td> <td>C/A<sup>1</sup></td> </tr> <tr> <td>KHTML</td> <td>Konqureror 3.1</td> <td>KDE 3.1</td> <td>3.1</td> <td>C</td> </tr> <tr> <td>KHTML</td> <td>Konqureror 3.3</td> <td>KDE 3.3</td> <td>3.3</td> <td>A</td> </tr> <tr> <td>KHTML</td> <td>Konqureror 3.5</td> <td>KDE 3.5</td> <td>3.5</td> <td>A</td> </tr> <tr> <td>Tasman</td> <td>Internet Explorer 4.5</td> <td>Mac OS 8-9</td> <td>-</td> <td>X</td> </tr> <tr> <td>Tasman</td> <td>Internet Explorer 5.1</td> <td>Mac OS 7.6-9</td> <td>1</td> <td>C</td> </tr> <tr> <td>Tasman</td> <td>Internet Explorer 5.2</td> <td>Mac OS 8-X</td> <td>1</td> <td>C</td> </tr> <tr> <td>Misc</td> <td>NetFront 3.1</td> <td>Embedded devices</td> <td>-</td> <td>C</td> </tr> <tr> <td>Misc</td> <td>NetFront 3.4</td> <td>Embedded devices</td> <td>-</td> <td>A</td> </tr> <tr> <td>Misc</td> <td>Dillo 0.8</td> <td>Embedded devices</td> <td>-</td> <td>X</td> </tr> <tr> <td>Misc</td> <td>Links</td> <td>Text only</td> <td>-</td> <td>X</td> </tr> <tr> <td>Misc</td> <td>Lynx</td> <td>Text only</td> <td>-</td> <td>X</td> </tr> <tr> <td>Misc</td> <td>IE Mobile</td> <td>Windows Mobile 6</td> <td>-</td> <td>C</td> </tr> <tr> <td>Misc</td> <td>PSP browser</td> <td>PSP</td> <td>-</td> <td>C</td> </tr> <tr> <td>Other browsers</td> <td>All others</td> <td>-</td> <td>-</td> <td>U</td> </tr> </tbody> </table> </body></html>
我在另一个回调中使用以下解决方案:
JavaScript:
"createdRow": function (row, data, index) {
if (data.type !== '') {
$(row).addClass('colored-row');
}
}
然后用 css 设置样式:
.colored-row{background-color:yellow;}
我知道这个帖子已经有几年了。 但我也在为此寻找解决方案并偶然发现了这里。 我能够弄清楚并想我会分享我的答案。
$(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");
}
}
},
以及以下造型。 我个人需要 !important 但可能不需要,具体取决于样式表的排序。
.row-attention {
background-color: #FFFF00 !important;
}
.cell-attention {
font-weight: bold;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.