DataTable排序(数字应优先于字母

时间:2014-02-26 11:43:30

标签: jquery jquery-datatables

我正在使用jquery DataTable作为数据网格。我需要帮助来排序可能是字母和数字组合的列值。在排序时,我必须优先考虑字母前的数字。

$(document).ready(function() {
    $('#example').dataTable();
});

在列Browser的此示例中,ASC订单的结果应如下所示:

abc21
bbc22
abc23
bbc26
abc29
abc31

首先按编号排序。

Code on JSFiddle

1 个答案:

答案 0 :(得分:0)

您应该可以使用Formatted Numbers自定义排序插件,该插件位于Datatables Plugin Section

基本上,在对该列进行排序时,请调用以下代码。

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    "formatted-num-pre": function ( a ) {
        a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" );
        return parseFloat( a );
    },

    "formatted-num-asc": function ( a, b ) {
        return a - b;
    },

    "formatted-num-desc": function ( a, b ) {
        return b - a;
    }
} );

通过在表的初始化代码中设置aoColumns对象,告诉数据表使用此类

$(document).ready(function() {
        $('#example').dataTable( {
            "aoColumns": [
                null, // each of these = a column in your table
                null,
                null,
                // this column, 4th, will be sorted usig the plugin
                { "sType": "formatted-num-pre" }, 
                null
            ]
        } );
    } );

同一页面上还有一个Natural sorting插件,可能有所帮助。

最终,您可以按照示例创建自己的插件。