您的數據包含數字和字符,因此默認情況下它們將按字符串排序。你應該編寫你自己的插件來排序你的數據類型。看看here和here 看看如何編寫一個插件,以及如何使用它與您的表。
編輯:今天有一段時間來處理數據表的東西。如果您仍需要一個解決方案,在這裏你去:
//Sorting plug-in
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
//pre-processing
"numchar-pre": function(str){
var patt = /^([0-9]+)([a-zA-Z]+)$/; //match data like 1a, 2b, 1ab, 100k etc.
var matches = patt.exec($.trim(str));
var number = parseInt(matches[1]); //extract the number part
var str = matches[2].toLowerCase(); //extract the "character" part and make it case-insensitive
var dec = 0;
for (i=0; i<str.length; i++)
{
dec += (str.charCodeAt(i)-96)*Math.pow(26, -(i+1)); //deal with the character as a base-26 number
}
return number + dec; //combine the two parts
},
//sort ascending
"numchar-asc": function(a, b){
return a-b;
},
//sort descending
"numchar-desc": function(a, b){
return b-a;
}
});
//Automatic type detection plug-in
jQuery.fn.dataTableExt.aTypes.unshift(
function(sData)
{
var patt = /^([0-9]+)([a-zA-Z]+)$/;
var trimmed = $.trim(sData);
if (patt.test(trimmed))
{
return 'numchar';
}
return null;
}
);
您可以使用自動型檢測功能,讓數據類型的自動檢測,或者您可以設置數據類型的列
"aoColumns": [{"sType": "numchar"}]
這會很好 - datatables很棒,但現在找到了一些限制! – 2013-03-24 07:00:58
@NickGreen:我已經使用與數據匹配的插件代碼更新了我的答案,並對它們進行了轉換和排序。我想知道它是否也適用於你。如果你有另一種解決方案,你可以在這裏分享嗎? – ducpn 2013-03-28 21:16:03
延誤道歉。我已經放置了你的代碼,但它似乎沒有做任何事情。我需要從其他地方打電話嗎? – 2013-04-09 13:17:13