数字排序不适用于我的数据集。所以我做了一个自定义排序,将整个字符串转换为数字然后根据它排序,但由于某些原因它不起作用。我在这里缺少什么?
$.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 }
]
});
升序和降序都无法正常工作。我已经检查了这些函数被调用并正确地将字符串转换为数字实例。
答案 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;
};