我有一个DataTable有很多列数字。我认为对负数进行着色会很好,所以我添加了一个渲染函数,如下所示:
{ data: 'mynumbercolumn',
render: function(data, type, row) {
var x = row.mynumbercolumn;
if (x < 0)
x = '<span class="text-danger">' + x + '</span>';
return x;
}
},
它的工作原理是负数应用了文本危险类别(即它们为红色),但现在列按字符串顺序而不是数字顺序排序,如下所示:
1
1111
111111
2
222
是否有一种方法可以将类添加到单元格(或以其他方式为负数着色),以便数字列仍按数字排序?如果不是,我想我将不得不添加自定义排序(或者放弃着色)。
最佳答案
看看type
参数https://datatables.net/reference/option/columns.render在任何情况下,您都会返回标记,即无论 type
如何是 filter
, display
, type
或排序。在这种情况下,您只想返回 display
类型的格式化 HTML 字符串。 :
render: function(data, type, row) {
if (type === 'display') {
var x = row.mynumbercolumn;
if (x < 0) x = '<span class="text-danger">' + x + '</span>';
return x;
} else {
return data //or row.mynumbercolumn
}
}
也许更优雅的方式可能是只设置 <td>
的样式本身在一个
createdCell
打回来。像这样的东西:
createdCell: function (td, cellData, rowData, row, col) {
if (cellData < 0) {
$(td).addClass('text-danger')
}
}
关于datatables-1.10 - DataTables 将格式添加到数字列中的单元格,使列排序为字符串而不是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59890197/