0

我需要根据如下所示的单个字符串的值使用数据表对表进行排序:

Number 23624 of 2010
Number 14502 of 1942
Number 10530 of 1942
Number 56020 of 2010
Number 06205 of 1997

我已经拆分了这个单一的字符串,这样我就有了 2 个数值 XXXXX 和 YYYY。

我需要做的是,如果 YYYY 相同并且在顶部有最新的 YYYY,则按 XXXXX 排序。例如:

Number 23624 of 2010
Number 56020 of 2010
Number 06205 of 1997
Number 10530 of 1942
Number 14502 of 1942

有人可以建议吗?我将oSort函数与 DataTables 一起使用。

编辑:根据要求,这是代码:

    jQuery.fn.dataTableExt.oSort['its-no-asc']  = function(a,b) {

    if(!j(a).is("a")) {
        x = a;
    } else {
        x = j(a).text();
}

if(!j(b).is("a")) {
    y = b;
} else {
    y = j(b).text();
} 

x_array = x.split(" ");
y_array = y.split(" ");
x_numbers_array = [];
y_numbers_array = [];

j.each(x_array, function(key, value) {
    orig_value = value;
    value = value.replace("Number", "");

    value = parseInt(value);
    if(j.isNumeric(value)) {
        x_numbers_array.push(value);
    }

    });

j.each(y_array, function(key, value) {
    orig_value = value;
    value = value.replace("Number", "");

    value = parseInt(value);
    if(j.isNumeric(value)) {
        y_numbers_array.push(value);
    }

});

y_no = y_numbers_array[0];
y_year = y_numbers_array[1];


x_no = x_numbers_array[0];
x_year = x_numbers_array[1];

//console.log(x_year);

if(x_year == y_year) {
    if(x_year == y_year && x_no < y_no) {
        return -1;
    } else if (x_year == y_year && x_no > y_no) {
        return 1;
    } else if (x_year == y_year) {
        return 0;
    }
} else if(x_year < y_year) {
    if(x_year < y_year && x_no < y_no) {
        return -1;
    } else if (x_year < y_year && x_no > y_no) {
        return 1;
    } else if (x_year < y_year) {
        return 0;
    }
} else if(x_year > y_year) {
    if(x_year > y_year && x_no < y_no) {
        return -1;
    } else if (x_year > y_year && x_no > y_no) {
        return 1;
    } else {
        return 0;
    }
    }

};

jQuery.fn.dataTableExt.oSort['its-no-desc']  = function(a,b) {
    //

};

j(document).ready(function() {
j('.treaty-table').dataTable({
        "sPaginationType": "full_numbers",
        "aoColumns": [
            { "sType": "its-no" },
            null,
            null,
            null,
            null
        ]
    });

});
4

1 回答 1

0

添加aaSorting这里0是第一列和1第二列,asc是升序。

阅读更多http://www.datatables.net/release-datatables/examples/basic_init/multi_col_sort.html

/* Define two custom functions (asc and desc) for string sorting */
jQuery.fn.dataTableExt.oSort['string-case-asc']  = function(x,y) {
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['string-case-desc'] = function(x,y) {
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};

$('.treaty-table').dataTable({
    "aaSorting": [ [0,'asc'], [1,'asc'] ],
    "sPaginationType": "full_numbers",
    "aoColumns": [
        { "sType": "its-no" },
        null,
        null,
        null,
        null
    ]
    });
});
于 2013-07-03T08:23:20.803 回答