如何排序版本号

时间:2015-09-29 07:23:29

标签: jquery datatables

我正在使用jQuery DataTables并且有一个名为“versions”的字段。表格的降序顺序如下所示:

2.3
2.2
2.12
2.11
2.1

但我需要按降序排序,如下所示:

2.12
2.11
2.3
2.2
2.1

我的JavaScript代码:

function TestTable1(searchLabel) {

    $('#datatable-1').dataTable({
        "aaSorting": [
            [0, "asc"]
        ],
            "sDom": "<'box-content'<'col-sm-6'f><'col-sm-6 text-right'l><'clearfix'>>rt<'box-content'<'col-sm-6'i><'col-sm-6 text-right'p><'clearfix'>>",
            "sPaginationType": "bootstrap",
            "oLanguage": {
            "sSearch": "Search in " + searchLabel + ":<br>",
                "sLengthMenu": '_MENU_'
        }
    });
}

我需要在这里改变什么逻辑?

1 个答案:

答案 0 :(得分:0)

  

<强>解

您需要使用自定义排序功能正确订购版本号,请参阅下面的代码。

如果需要,请将0中的"aTargets": [0]更改为版本列的相应的从零开始的索引。

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    "version-pre": function ( d ) {
       var a = d.split("."), res = "";
       for(var i = 0; i < a.length; i++) {
          res += ("0000000000" + a[i]).slice(-10);
       }   
       return res;
    },   
    "version-asc": function ( a, b ) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "version-desc": function ( a, b ) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }    
});

function TestTable1(searchLabel) {    
    $('#datatable-1').dataTable({
        "aaSorting": [[0, "asc"]],
        "sDom": "<'box-content'<'col-sm-6'f><'col-sm-6 text-right'l><'clearfix'>>rt<'box-content'<'col-sm-6'i><'col-sm-6 text-right'p><'clearfix'>>",
        "sPaginationType": "bootstrap",
        "oLanguage": {
            "sSearch": "Search in " + searchLabel + ":<br>",
            "sLengthMenu": '_MENU_'
        },
        "aoColumnDefs": [
           { "aTargets": [0], "sType": 'version' }
        ]
    });
}
  

<强>样本

请参阅this jsFiddle以获取代码和演示。