【问题标题】:jquery datatables sorting neglect null valuejquery数据表排序忽略空值
【发布时间】:2013-05-01 12:30:17
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    看到这个: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"}
                    ],
    } );
    

    【讨论】:

    • 太棒了!这就是我一直在寻找的答案!工作得很好!
    【解决方案2】:

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

    您可以将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

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2011-10-18
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 2015-11-15
      • 2013-05-10
      • 1970-01-01
      • 2020-07-10
      相关资源
      最近更新 更多