我正在使用数据表和 jQuery 来制作漂亮的可排序表。我现在想将行排序为一个值。该值是一个数值。但它也可能不可用,所以到那时我会回应一个破折号。
当我现在对该列进行排序时,所有带有破折号的行都在顶部。然后显示值为 1、3、6、8、10 的行。如何更改它以使破折号 (-) 始终位于表格底部?
目前我输入了一个最大数量,是什么把它们放在了底部。但是我不希望这个值显示给用户。所以我需要一个隐藏的排序列,或者其他排序方法。
提前致谢!
我正在使用数据表和 jQuery 来制作漂亮的可排序表。我现在想将行排序为一个值。该值是一个数值。但它也可能不可用,所以到那时我会回应一个破折号。
当我现在对该列进行排序时,所有带有破折号的行都在顶部。然后显示值为 1、3、6、8、10 的行。如何更改它以使破折号 (-) 始终位于表格底部?
目前我输入了一个最大数量,是什么把它们放在了底部。但是我不希望这个值显示给用户。所以我需要一个隐藏的排序列,或者其他排序方法。
提前致谢!
看到这个: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"}
],
} );
刚刚遇到这个并想分享一个更简单的解决方案(最初回答这个问题时可能不可用):
您可以将属性添加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