当前位置: 首页 > 知识库问答 >
问题:

角度数据表不能正确排序数字

段干河
2023-03-14

我有一个日期,显示两个人之间的数字联系。其中一些人没有任何联系,所以有些单元格可能有一个字符串“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,。。。

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

共有1个答案

阚砚文
2023-03-14

内置类型检测非常有效。但是,如果有任何内容与假定的类型冲突,则该列将转换为默认的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">

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

 类似资料:
  • 预期:我将从返回的API中获取日期时间字符串。该值应在表格中显示为'DD-MM-YYYY HH:MM。Vuetify附带了一个数据表组件,可以对数据进行升序和降序排序。我还想对日期使用此功能,使其按升序和降序排序。 简短的问题:应用编程接口中的日期应该以表中的另一种“样式”保存和显示,但是排序功能使用真实的日期对象。 我当前的代码:

  • 我需要一些帮助来理解如何将HTML与Angular一起使用。我这里有个目标。我想在下拉列表中显示汽车的。但是当您选择一辆时,变量应该是整个car对象。但是仍应仅显示。 这里有一个玩这个的地方:https://stackblitz.com/edit/angular-cwmwke

  • 问题内容: 尝试从我知道仅包含整数的数组中获取最高和最低值似乎比我想象的要难。 我希望这能显示出来。相反,它显示。因此,似乎排序是将值作为字符串处理。 有没有一种方法可以使sort函数对整数值进行实际排序? 问题答案: 默认情况下,sort方法按字母顺序对元素进行排序。要进行数字排序,只需添加一个处理数字排序的新方法(sortNumber,如下所示)- 在ES6中,可以使用箭头功能简化此操作: 说

  • 主要内容:JSF数据表更新行数据实例JSF中有一个叫作的控件,可用来渲染和格式化表格。使用,我们可以迭代收集或数组数组来显示数据。下面我们来学习如何向排序数据。 要使用,我们需要添加以下HTML头。 以下JSF标签 - 被渲染成以下HTML标签。 JSF数据表更新行数据实例 打开 NetBeans IDE 创建一个Web工程:DataTableSort,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内

  • 当xhtml运行时,数据表会显示出来,但只有一列显示为可用于排序(即,标题中有向上/向下箭头图标)。 dataTable有两个问题: 只有一列(年份)显示为可用于排序。(Year是Car类中“int”类型的属性,而其他三列是String类型,因此问题的一个方面是String字段忽略了sortby=“#{Car.xxx}”标记。) 年份列实际上是不可排序的。点击年份标题的向上/向下箭头没有效果。当点

  • 问题内容: 我想按下面显示的顺序对它们进行排序(数字1-12): 但是,我的查询-使用按其他所有字母开头的数字排序: 有什么技巧可以使其更正确地排序吗? 此外,为了充分公开,这可以是字母和数字的混合(尽管现在不是),例如: 等等.... 谢谢! 更新:人们要求查询 问题答案: 人们使用不同的技巧来做到这一点。我搜索了一下,发现每个结果都遵循不同的技巧。看看他们: MySQL中的字母数字排序 MyS