DataTables 将格式添加到数字列中的单元格,使列排序为字符串而不是数字
DataTables add formatting to cell in numeric column makes column sort as a string not a number
我有一个 DataTable,其中有很多列数字。我认为给负数着色会很好,所以我添加了一个渲染函数,如下所示:
{ data: 'mynumbercolumn',
render: function(data, type, row) {
var x = row.mynumbercolumn;
if (x < 0)
x = '<span class="text-danger">' + x + '</span>';
return x;
}
},
它的工作原理是负数应用了文本危险 class(即它们是红色的)但现在该列按字符串顺序而不是数字顺序排序,所以像这样:
1
1111
111111
2
222
有没有办法将 class 添加到单元格(或以其他方式为负数着色),使数字列仍按数字排序?如果不是,我想我将不得不添加自定义排序(或放弃着色)。
看看 type
参数 https://datatables.net/reference/option/columns.render 你 return 在任何情况下的标记,即不管 type
是 filter
,display
、type
或排序。在这种情况下,您只想 return 类型为 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')
}
}
我有一个 DataTable,其中有很多列数字。我认为给负数着色会很好,所以我添加了一个渲染函数,如下所示:
{ data: 'mynumbercolumn',
render: function(data, type, row) {
var x = row.mynumbercolumn;
if (x < 0)
x = '<span class="text-danger">' + x + '</span>';
return x;
}
},
它的工作原理是负数应用了文本危险 class(即它们是红色的)但现在该列按字符串顺序而不是数字顺序排序,所以像这样:
1
1111
111111
2
222
有没有办法将 class 添加到单元格(或以其他方式为负数着色),使数字列仍按数字排序?如果不是,我想我将不得不添加自定义排序(或放弃着色)。
看看 type
参数 https://datatables.net/reference/option/columns.render 你 return 在任何情况下的标记,即不管 type
是 filter
,display
、type
或排序。在这种情况下,您只想 return 类型为 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')
}
}