2013-05-01 129 views
2

我正在使用數據表和jQuery製作漂亮的可排序表。我現在想要爲行排序一個值。該值是一個數值。但它也可能不可用,所以在那一點上我會迴應一個短劃線。jquery datatables排序忽略空值

當我現在對這個列進行排序時,所有帶破折號的行都在最上面。並且顯示值爲1,3,6,8,10的行。我如何改變這個,使破折號( - )總是在桌子底部?

目前我輸入了一個最大數字,是什麼讓他們在底部。不過,我不希望將這個值顯示給用戶。所以我需要一個隱藏的排序列或其他排序方法。

在此先感謝!

回答

5

看到這個:http://jsfiddle.net/CYubV/

在表格的第一欄就像一個正常的列;第二列就像你問的那樣工作。

嘗試自定義排序,這樣的事情:

$.fn.dataTableExt.oSort['nullable-asc'] = function(a,b) { 
    if (a == '-') 
     return 1; 
    else if (b == '-') 
     return -1; 
    else 
    { 
     var ia = parseInt(a); 
     var ib = parseInt(b); 
     return (ia<ib) ? -1 : ((ia > ib) ? 1 : 0); 
    } 
} 

$.fn.dataTableExt.oSort['nullable-desc'] = function(a,b) { 
    if (a == '-') 
     return 1; 
    else if (b == '-') 
     return -1; 
    else 
    { 
     var ia = parseInt(a); 
     var ib = parseInt(b); 
     return (ia>ib) ? -1 : ((ia < ib) ? 1 : 0); 
    } 
} 

$('#table').dataTable({ 
    "bPaginate": false, 
    "bFilter": false, 
    "aoColumns": [ 
      null, 
      {"bSortable": true, "sType": "nullable"} 
       ], 
}); 
+0

Owesome!這是我正在尋找的答案!非常棒! – Timo002 2013-05-08 10:55:28

+0

很高興我可以幫助,感謝您的投票。 – 2013-05-08 12:38:31