我正在使用datatables和jQuery来制作漂亮的可排序表。我现在想要为行排序一个值。该值是数值。但它也可能无法使用,所以在那一点上我会回应一下。
当我现在对此列进行排序时,带有短划线的所有行都在顶部。并且显示了具有值1,3,6,8,10的行。如何更改此项以使短划线( - )始终位于表格的底部?
目前我输入了一个最大数字,这使得它们处于最底层。但是我不希望这个值显示给用户。所以我需要一个隐藏的排序列或其他排序方法。
提前致谢!
答案 0 :(得分:7)
请参阅: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"}
],
} );
答案 1 :(得分:0)
刚遇到这个问题,并希望分享一个更简单的解决方案(当最初回答此问题时可能无法使用):
您可以将属性data-order
添加到每个td
标签,然后将其用于订购。例如:
<td data-order="10">10</td>
<td data-order="9999">–</td>
...会将10排序为10,但破折号好像是9999。您为破折号填写的内容可能是可变的,具体取决于例如确定服务器端的最大值。此外,这对于所有类型的数据都更加灵活。在此处查看文档:
https://datatables.net/examples/advanced_init/html5-data-options