【问题标题】:How can I write a custom sort for jQuery Datatables?如何为 jQuery 数据表编写自定义排序?
【发布时间】:2014-08-19 09:52:23
【问题描述】:

我正在使用 jQuery 插件 Datables:http://www.datatables.net/

我的例子在这里:http://live.datatables.net/wanebotu/1/edit

我的示例表中有几列,其中之一是“名称”。我添加了一些相同的名称,但一个以大写开头,另一个全小写。例如:阿什顿考克斯,阿什顿考克斯。但是,我确实相信数据表中使用的默认排序不区分大小写,这意味着排序是“稳定的”(如果我错了,请纠正我)。

我的问题是,当我对它进行排序时,列变得不一致。如果它是升序的,大写字母将排在第一位,因为第一行是 Ashton Cox,然后是 ashton cox。如果是下降的,最后一行是ashton cox,那么倒数第二行是ashton cox。

因此,如果最后一行是同一个单词但大写,我如何编写自定义排序,使最后一行先大写以进行降序。

E.g. for ascending:
Ashton Cox
ashton cox,
Colleen Hurst
colleen Hurst

E.g. for descending: 
colleen hurst,
Colleen Hurst,
ashton cox
Ashton Cox

对不起,如果这一切听起来令人费解。这是一个令人困惑的问题,具有令人困惑的要求。

【问题讨论】:

标签: javascript jquery sorting datatables


【解决方案1】:

让这个使用以下代码:

$.extend( $.fn.dataTableExt.oSort, {
    "casetext-pre": function ( a ) {
      return a[0].toLowerCase()+a;
    },
    "casetext-asc": function ( a, b ) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "casetext-desc": function ( a, b ) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
} );

$(document).ready( function () {
  var table = $('#example').DataTable({
        "aoColumns": [{
      "sType": "casetext"
    },null,null,null,null,null]
  });
} );

这将定义一个新的排序函数/类型,它将数据的第一个字符转换为小写,然后附加原始字符串数据。

请注意,必须在aoColums 中设置数据类型。 (在这个例子中,我只关心具有特定类型的名称)。 nulls 的数量应该与您的列相匹配。

这没有经过非常彻底的测试,但它应该会为您提供有关如何进行的提示。

这是你修改后的example

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 2014-01-12
    • 2012-01-05
    • 2016-06-15
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多