【问题标题】:jQuery dataTables sorting on custom date range columnjQuery dataTables 在自定义日期范围列上排序
【发布时间】:2015-10-20 10:41:37
【问题描述】:

我正在使用 jQuery DataTable,第一列包含自定义日期范围。例如:22 Oct 2015 - 22 Nov 2015 其中22 Oct 2015 是开始日期,22 Nov 2015 是结束日期。我希望排序功能在开始日期起作用。

让我解释一个场景:假设我在 DataTable 中有 4 行,第一列日期值是:

  • 2016 年 8 月 25 日 - 2016 年 9 月 21 日
  • 2015 年 10 月 22 日 - 2015 年 11 月 22 日
  • 2015 年 10 月 21 日 - 2015 年 11 月 21 日
  • 2015 年 12 月 2 日 - 2016 年 1 月 2 日

我想要以下格式的排序结果:

  • 2016 年 8 月 25 日 - 2016 年 9 月 21 日
  • 2015 年 12 月 2 日 - 2016 年 1 月 2 日
  • 2015 年 10 月 22 日 - 2015 年 11 月 22 日
  • 2015 年 10 月 21 日 - 2015 年 11 月 21 日

怎么做!

【问题讨论】:

    标签: jquery sorting datatables


    【解决方案1】:

    您必须实现自己的排序插件才能做到这一点。这很简单:

    jQuery.extend( jQuery.fn.dataTableExt.oSort, {
        "date-range-pre": function ( a ) {
            a = a.split('-')[0].trim();
            return Date.parse(a);   
        },
         "date-range-asc": function ( a, b ) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        },
         "date-range-desc": function ( a, b ) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
        }
    } );
    

    上面只是通过拆分字符串来提取第一个日期,然后对其进行排序。没有错误处理,即小心处理空字符串等等 - 你可以自己做。用法:

    var table = $('#example').DataTable({
        columnDefs: [
           { type: 'date-range', targets: 0 }
        ]
    }) 
    

    演示 -> http://jsfiddle.net/gs5syg70/

    【讨论】:

    • Asc 排序很简单,如 return b - a,而 desc 排序则为 return a - b;(或者可能反过来,但你明白了)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多