jQuery DataTables的简单自定义排序功能

时间:2017-11-14 17:00:45

标签: jquery sorting datatables

数字排序不适用于我的数据集。所以我做了一个自定义排序,将整个字符串转换为数字然后根据它排序,但由于某些原因它不起作用。我在这里缺少什么?

$.fn.dataTableExt.oSort["test-desc"] = function (x, y)
{

         x = parseInt(x);
        y = parseInt(y);

        if ( x < y)
        {
            return 1;
        }

        return 0;


};

$.fn.dataTableExt.oSort["test-asc"] = function (x, y)
{

    x = parseInt(x);
    y = parseInt(y);

    if ( x > y)
    {
        return 1;
    }

    return 0;

}

$('table').DataTable({
    "pageLength": 300,
    "bLengthChange": false,
    "columnDefs": [
    { "type": "test", targets: 3 }
    ]
});

enter image description here

升序和降序都无法正常工作。我已经检查了这些函数被调用并正确地将字符串转换为数字实例。

2 个答案:

答案 0 :(得分:2)

jQuery DataTable排序函数不返回1和0.而是返回1和-1。因此,修改排序功能使它们完美运行。

    $.fn.dataTableExt.oSort["test-desc"] = function (x, y)
    {

        x = parseInt(x);
        y = parseInt(y);

        if ( x > y)
        {
            return -1;
        }

        return 1;

    };

    $.fn.dataTableExt.oSort["test-asc"] = function (x, y)
    {

        x = parseInt(x);
        y = parseInt(y);

        if ( x > y)
        {
            return 1;
        }

        return -1;
    }

答案 1 :(得分:0)

jQuery DataTable排序函数看起来不是0或1,也不是1或-1。它寻找正值或负值。所以你可以做:

$.fn.dataTableExt.oSort["test-desc"] = function (x, y) {
    x = parseInt(x);
    y = parseInt(y);
    return y - x;
};

$.fn.dataTableExt.oSort["test-asc"] = function (x, y) {
    x = parseInt(x);
    y = parseInt(y);
    return x - y;
};