2015-11-02 39 views
1

我有一个表格,其中有第一列作为月份名称(1月,2月...),并且我想根据月份数对行进行排序。 1月是第一次,之后是2月等。数据表根据月份名称作为数据进行排序

,如果我做

table.fnSort([[ 0, "asc"]]); 

我得到这个月的名称排序表。

最终,我得到了这个 http://drmsite.blogspot.co.il/2013/08/datatables-custom-sort-by-month-name.html ,但它只适用于当我点击列的标题。 我需要表格在加载时按月份排序。谁能帮我?

回答

5

你可以实现你自己的排序插件来做到这一点。这很简单。在这里我定义了一个月数组,在排序之前,我返回的索引不是这个月份。

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "date-range-pre": function (a) { 
     var monthArr = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 
     return monthArr.indexOf(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)); 
    } 
}); 

// Apply date-range sorting with your DataTable init 
var table = $('#example').DataTable({ // example is your table id 
    columnDefs: [ 
     { type: 'date-range', targets: 0 } 
    ] 
}) 

这是一个工作demo

+0

工作完美!我只是在我的代码中粘贴了它,它工作。谢谢! – Bryce

+0

太棒了!我只是将我的数组值改为['Jan','Feb','Mar',...,它对我来说非常合适。 –

相关问题