在 yadcf 插件中排序自定义日期格式
sort custom date format in yadcf plugin
我正在使用 jquery Datatables 与 moment.js 和 yadcf-plugin。
在我的 table 中,我有一个 dd.mm.yyyy 格式的日期字段 - 为了正确排序,我使用了 moment-plugin,效果很好。
但是在yadcf-filter中,排序为"alpha",像
- 2020 年 9 月 1 日
- 21.05.2019
- 2020 年 4 月 30 日
- 30.08.2025
- 2017 年 12 月 31 日
- 2021 年 12 月 31 日
但我需要
- 2017 年 12 月 31 日
- 21.05.2019
- 2020 年 4 月 30 日
- 2020 年 9 月 1 日
- 2021 年 12 月 31 日
- 30.08.2025
如何使用 moment.js 对值进行排序?
谢谢。
更新:请参阅下面的 编辑 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 select/dropdown 进行排序,我看到的唯一选择是拥有自己的排序功能:
$(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}
}
}
]);
});
我正在使用 jquery Datatables 与 moment.js 和 yadcf-plugin。
在我的 table 中,我有一个 dd.mm.yyyy 格式的日期字段 - 为了正确排序,我使用了 moment-plugin,效果很好。
但是在yadcf-filter中,排序为"alpha",像
- 2020 年 9 月 1 日
- 21.05.2019
- 2020 年 4 月 30 日
- 30.08.2025
- 2017 年 12 月 31 日
- 2021 年 12 月 31 日
但我需要
- 2017 年 12 月 31 日
- 21.05.2019
- 2020 年 4 月 30 日
- 2020 年 9 月 1 日
- 2021 年 12 月 31 日
- 30.08.2025
如何使用 moment.js 对值进行排序?
谢谢。
更新:请参阅下面的 编辑 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 select/dropdown 进行排序,我看到的唯一选择是拥有自己的排序功能:
$(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}
}
}
]);
});