【问题标题】:Custom column sorting in jquery Datatablejquery Datatable中的自定义列排序
【发布时间】:2014-04-07 06:38:21
【问题描述】:

我正在使用 jquery 数据表来显示数据。没有数据时显示“--”。目前,当表格对数据进行排序时,所有的“--”都在开头,顺序如下所示:

--
--
10
20
400
800

但我需要让“--”在按升序排序时显示在最后,并且应该如下所示:

10
20
400
800
--
--

请告诉我如何在 jquery 数据表中获得这种行为?

【问题讨论】:

标签: javascript jquery jquery-datatables


【解决方案1】:

你可以使用扩展

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "myorder-pre": function (a) {

    },

    "myorder-asc": function (a, b) {
        if(a == '--' && b != '--')
            return 1;
        else if(b == '--' && a != '--')
            return -1;
        else if(b == '--'&& a == '--')
            return 0;
        else
        {
            a = parseFloat(a);
            b = parseFloat(b);
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));

        }
    },

    "myorder-desc": function (a, b) {
        if(a == '--' && b != '--')
            return -1;
        else if(b == '--' && a != '--')
            return 1;
        else if(b == '--'&& a == '--')
            return 0;
        else
        {
            a = parseFloat(a);
            b = parseFloat(b);
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));

        }
    }
});

myorder-pre 在所有订单调用之前使用。 当您订购 asc 时,myorder-asc。如果是次要 b,则返回数字负数,如果是主要 b,则返回正数,如果相等,则返回 0。 描述工作不利

然后在datatable的列定义中,使用

"aoColumnDefs": [{ "sType": 'myorder'}]

【讨论】:

  • 谢谢。这正是我一直在寻找的。合并您的实施后,我将更新我的 cmets。再次感谢。
【解决方案2】:

您可以使用以下代码:

 $('#example').dataTable( {
    "aaSorting": [[ 4, "desc" ]]
} );

对于reference

【讨论】:

  • 不,这个解决方案不会像预期的那样工作,因为我们需要在 asc 和 desc 排序上定义关于 '--' 的定义。使用代码 sn-p 您给它只使用默认行为按降序排序。希望我能表达清楚。
猜你喜欢
  • 2013-07-22
  • 2015-05-10
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多