2013-05-01 65 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