datatables-1.10 - DataTables 将格式添加到数字列中的单元格,使列排序为字符串而不是数字

标签 datatables-1.10

我有一个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/

相关文章:

javascript - 在进行超链接之前验证数据表

javascript - 在 Shiny DataTable 中展开和折叠子行

javascript - 数据表 - 内容更新后排序不起作用

Jquery 数据表排序不适用于日期列?

jquery - 如何自定义jquery数据表导出,例如PDF Excel打印和CSV?

filtering - jQuery dataTables - 获取过滤的列值

javascript - 实例化数据表后如何更新/添加按钮

带有服务器端的数据表自定义过滤

javascript - 如何使用 jQuery DataTables 呈现单选按钮组

javascript - 如何仅更新DataTables中单元格的正交(但不显示)数据?