所以看起来你有两个问题。首先,dT 没有选择您的自定义排序 - 它只是忽略它并使用标准排序。我可以通过为每一列指定排序来解决这个问题:
$('#table_list').dataTable({
"aoColumns": [null, {"sType": "natural"}, null, null],
"aaSorting": [[ 1, "asc" ]],
"sScrollX": "100%",
});
其次,自然排序不会按照您期望的方式对这些数字进行排序。它将第一个数字部分直到空格并对其进行排序,如下所示:
2 150 000 €
4 750 000 €
210 000 €
所以你可能只想写你自己的排序。这是我试过的一个例子:
function testSort( a, b ) {
var aa = a.replace(/[ \.]/g,''), bb = b.replace(/[ \.]/g,'');
aa = parseInt( aa.substring( 0, aa.length - 1 ) );
bb = parseInt( bb.substring( 0, bb.length - 1 ) );
return aa == bb ? 0 : ( aa < bb ? -1 : 1 );
}
关键是删除空格、句点和欧元符号,以便可以将其读取为数字。