首页 > 解决方案 > 在我的数据表中,我有一个仅包含简单字符串的简单列,但它没有正确排序

问题描述

我有一个非常简单的数据表。除一列外,每一列都正确排序。此列仅包含文本(字符串)。这是我对列进行排序时得到的顺序:

À publier,
Retiré temporairement,
Retiré - Rejet
Nouveau.

这是 Datatable 的代码,如您所见,它非常简单。var peutModifier = $('#hdnPeutModifier').val();

if (peutModifier !== 'undefined' && peutModifier === 'True') {
    colonneAvecTriDesactive = [0, -1]; // Tri désactivé sur première et dernière colonne.
} else {
    colonneAvecTriDesactive = [-1]; // Tri désactivé sur dernière colonne.
}

$('#DataTablePublication').DataTable({
    search: false,
    bFilter: false,
    pageLength: 100,
    lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
    columnDefs: [
        { orderable: false, targets: colonneAvecTriDesactive }
    ],
    order: [],
    language: {
        paginate: {
            first: "Premier",
            last: "Dernier",
            next: "Suivant",
            previous: "Précédent"
        }
    }
});

我检查了该列仅包含字符串,此外,我没有在列排序上设置任何触发器,并且我的浏览器中没有任何错误。

有人对这个问题有想法吗?

标签: sortingdatatable

解决方案


看起来您已经按字母倒序对列进行了排序 - 这就是为什么À首先出现的原因(因为À随后z,使用默认代码点排序)。

要使用对语言敏感的排序,即您希望在字典中找到的排序顺序(其中égliseeagle,不是zebra),您可以使用 DataTables国际化插件

使用步骤:

  1. 将库添加到<head>页面的部分。您可以为此使用 CDN:

    <script src="https://cdn.datatables.net/plug-ins/1.11.0/sorting/intl.js"></script>

  2. 在创建 DataTable 之前,在脚本中初始化插件:

    $.fn.dataTable.ext.order.intl();

如果您愿意,还可以提供明确的语言环境:

$.fn.dataTable.ext.order.intl('fr');

此处描述了各种其他配置选项。


推荐阅读