3

我正在使用数据表和 jQuery 来制作漂亮的可排序表。我现在想将行排序为一个值。该值是一个数值。但它也可能不可用,所以到那时我会回应一个破折号。

当我现在对该列进行排序时,所有带有破折号的行都在顶部。然后显示值为 1、3、6、8、10 的行。如何更改它以使破折号 (-) 始终位于表格底部?

目前我输入了一个最大数量,是什么把它们放在了底部。但是我不希望这个值显示给用户。所以我需要一个隐藏的排序列,或者其他排序方法。

提前致谢!

4

2 回答 2

8

看到这个: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"}
                ],
} );
于 2013-05-06T23:04:55.557 回答
0

刚刚遇到这个并想分享一个更简单的解决方案(最初回答这个问题时可能不可用):

您可以将属性添加data-order到每个td标签,然后将其用于订购。例如:

<td data-order="10">10</td>
<td data-order="9999">&ndash;</td>

... 将 10 排序为 10,但破折号好像是 9999。您为破折号填写的内容可能是可变的,并且取决于例如识别服务器端的最大值。此外,这对于所有类型的数据都更加灵活。在此处查看文档:

https://datatables.net/examples/advanced_init/html5-data-options

于 2018-07-07T17:00:17.313 回答