Filter 数据表/YADCF和过滤器排序顺序

Filter 数据表/YADCF和过滤器排序顺序,filter,datatables,yadcf,Filter,Datatables,Yadcf,我正在使用datatables和yadcf在月和工作日进行筛选,但无法对选择列表进行正确排序 身份证件 名称 月 周工作日 var myData=[ {“Id”:1,“Name”:“Test 1”,“Month”:{“Id”:5,“Label”:“May”},“Weekday”:{“Id”:3,“Label”:“beday”}, {“Id”:2,“Name”:“Test 2”,“Month”:{“Id”:5,“Label”:“May”},“Weekday”:{“Id”:3,“Label”:“

我正在使用datatables和yadcf在月和工作日进行筛选,但无法对选择列表进行正确排序


身份证件
名称
月
周工作日
var myData=[
{“Id”:1,“Name”:“Test 1”,“Month”:{“Id”:5,“Label”:“May”},“Weekday”:{“Id”:3,“Label”:“beday”},
{“Id”:2,“Name”:“Test 2”,“Month”:{“Id”:5,“Label”:“May”},“Weekday”:{“Id”:3,“Label”:“星期二”}
...
];
$(函数(){
变量表=$('#myTable')。数据表({
“数据”:myData,
“栏目”:[
{“目标”:0,“数据”:“Id”},
{“目标”:1,“数据”:“名称”},
{“目标”:2,“数据”:函数(数据、类型、val、meta){
如果(类型==‘显示’){
返回data.Month.Label;
}else if(类型==='filter'){
返回data.Month.Label;
}
//“sort”、“type”和“undefined”都使用整数
返回data.Month.Id;
} },
{“目标”:3,“数据”:函数(数据、类型、val、meta){
如果(类型==‘显示’){
返回data.Weekday.Label;
}else if(类型==='filter'){
返回data.Weekday.Label;
}
//“sort”、“type”和“undefined”都使用整数
返回data.Weekday.Id;
} }
]
});
yadcf.init(表[
{
列号:2,
过滤器类型:“选择”,
筛选匹配模式:“精确”,
样式_类:“窗体控件”
},
{
列号:3,
过滤器类型:“选择”,
筛选匹配模式:“精确”,
样式_类:“窗体控件”
}
]);
} );

如何订购这些过滤器,以便它们订购1月、2月、3月和工作日的周一、周二、周三等

小提琴:

如果我为过滤器添加自定义排序函数,并为过滤器返回data.Month.Id,则排序将正确,但过滤器中显示的是月份编号,而不是其名称


谢谢你在这方面的任何帮助,因为这让我发疯了,谢谢

您应该使用
排序方式为:“自定义”
排序方式为自定义函数:monthSort
并实现您自己的排序功能,以下是一种快速方法:

$(function () {
    var Table = $('#myTable').DataTable({
        'data': myData,
        "columns" : [
            { "data" : "Id" },
            { "data" : "Name" },
            { "data" : "Month.Label" },
            { "data" : "Weekday.Label" }
        ]
    });

    yadcf.init(Table, [
        {
            column_number : 2, 
            filter_type: 'select',
            filter_match_mode: 'exact', 
            style_class: 'form-control',
            sort_as: 'custom',
            sort_as_custom_func: monthSort
        },
        {
            column_number : 3, 
            filter_type: 'select',
            filter_match_mode: 'exact', 
            style_class: 'form-control'
        }
    ]);
  
  function monthSort(a, b){
    var months = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"];
         return months.indexOf(a) - months.indexOf(b);}
} );

谢谢,在几个月内都可以正常工作,但无法计算如何处理工作日,在我的开发服务器上(英语工作日)可以正常工作,但在本地化的生产环境中(本例中为瑞典语),订单为周日、周二、周一。我真的不理解自定义排序函数的逻辑?啊,很抱歉混淆了,与月/工作日数无关。我改为服务器使用本地化名称,自定义函数中的对应数组现在可以在两台服务器上工作。非常感谢。