在yadcf插件中排序自定义日期格式

时间:2018-02-15 16:56:40

标签: datatables yadcf

我正在使用带有moment.js和yadcf-plugin的jquery数据表。

在我的表格中,我有一个格式为dd.mm.yyyy的日期字段 - 为了正确排序我使用了moment-plugin,这很有效。

但是在yadcf过滤器中,它被排序为" alpha",如

  • 2020年9月1日
  • 2019年5月21日
  • 2020年4月30日
  • 2025年8月30日
  • 2017年12月31日
  • 2021年12月31日

但我需要

  • 2017年12月31日
  • 2019年5月21日
  • 2020年4月30日
  • 2020年9月1日
  • 2021年12月31日
  • 2025年8月30日

如何使用moment.js对值进行排序?

谢谢。

1 个答案:

答案 0 :(得分:1)

更新:请参阅下面的编辑2 ,以回答实际问题。

似乎将sort_as: 'alphaNum'添加到日期列的yadcf参数中会这样做:

$(document).ready(function(){
  $.fn.dataTable.moment( 'DD.MM.YYYY' );
  $('#test').dataTable().yadcf([
    {column_number : 0, select_type: 'select'},
    {column_number : 1, select_type: 'select', sort_as: 'alphaNum'}
  ]);
});

编辑:如果您还想将默认排序更改为日期列,则需要将order param添加到dataTables对象本身:

$(document).ready(function(){
  $.fn.dataTable.moment( 'DD.MM.YYYY' );
  $('#test').dataTable({
    "order": [[ 1, 'asc' ]]
  }).yadcf([
    {column_number : 0, select_type: 'select'},
    {column_number : 1, select_type: 'select', sort_as: 'alphaNum'}
  ]);
});

编辑2 :如果您想对yadcf选择/下拉列表进行排序,我看到的唯一选项就是拥有自己的排序功能:

$(document).ready(function(){
  $.fn.dataTable.moment( 'DD.MM.YYYY' );
  $('#test').dataTable({
    "order": [[ 1, 'asc' ]]
  }).yadcf([
    {column_number : 0, select_type: 'select'},
    {column_number : 1, select_type: 'select', sort_as: 'custom', sort_as_custom_func: function(one, two) {
        if (moment(one, "DD.MM.YYYY").isAfter( moment(two, "DD.MM.YYYY") )) {return true}
        else {return false}
      }
    }
  ]);
});