【问题标题】:Angular + Datatables don't sort numbers rightAngular + Datatables 不能正确排序数字
【发布时间】:2017-06-20 18:34:21
【问题描述】:

我得到了一个显示 2 个人之间的数字连接的数据表。其中一些没有任何连接,因此可能会有一个字符串“x”作为某些单元格的值。

我遇到的问题是排序。如果我按列排序,数字只会按第一个数字排序,而不是点前面的部分。

我将点设置为小数点分隔符,如下所示:

    var lang = {
        "decimal":        ".",
        "emptyTable":     "No data available in table",
        "info":           "Showing _START_ to _END_ of _TOTAL_ entries",
        "infoEmpty":      "Showing 0 to 0 of 0 entries",
        "infoFiltered":   "(filtered from _MAX_ total entries)",
        "infoPostFix":    "",
        "thousands":      "",
        "lengthMenu":     "Show _MENU_ entries",
        "loadingRecords": "Loading...",
        "processing":     "Processing...",
        "search":         "Search:",
        "zeroRecords":    "No matching records found",
        "paginate": {
            "first":      "First",
            "last":       "Last",
            "next":       "Next",
            "previous":   "Previous"
        },
        "aria": {
            "sortAscending":  ": activate to sort column ascending",
            "sortDescending": ": activate to sort column descending"
        }
    };

    $scope.dtOptions = DTOptionsBuilder.newOptions()
        .withDOM('frtip')
        .withOption('language', lang)
        .withButtons([
            {
                extend: 'csv',
                text: 'Download as CSV'
            },
            {
                extend: 'excel',
                text: 'Download as XLS'
            }
        ]);

以下是从控制台输出中获取的数据摘录:

再次截图解释错误排序:

这里的表格按列 leonard 排序,您可以看到这是按第一个数字排序的。但它应该是:94.36, 66.39, 9.96, 7.31,...

知道我可能做错了什么吗?

【问题讨论】:

    标签: angularjs sorting datatables


    【解决方案1】:

    内置类型检测效果很好。但是,如果 anything 与假定的类型冲突,则该列将转换为默认的 alpha 排序。您可以有一行完美的有效日期,但如果最后一行包含 null 或 x 就像您的情况一样,您最终会得到 alpha 排序。您可以通过在 columnDefs 部分中强制使用 num 数据类型来解决此问题:

    $scope.dtColumnDefs = [
       { targets: 0, type: 'num' } //0 is the column index
    ];
    

    不知道你的标记,但它会像

    <table datatable="" dt-options="dtOptions" dt-column-defs="dtColumnDefs">
    

    现在数字应该被正确排序了

    【讨论】:

      猜你喜欢
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 2019-08-02
      • 2018-11-16
      • 1970-01-01
      • 2017-08-04
      相关资源
      最近更新 更多