在初始排序JQuery DataTable时最后显示空值

时间:2016-09-06 18:15:09

标签: jquery datatables

我有一个网页,我显示的数据的日期列是从应用程序而不是从数据库派生的。初始排序aaSorting正是我所需要的,因为用户希望在第一次访问页面时按此日期对数据进行排序。但是,在我的情况下,我希望它们位于列表的末尾,空值显示在列表的最开头。有没有我可以用来做这个设置?

这个jsfiddle展示了我遇到的问题。 https://jsfiddle.net/k4pmL8j0/4/

$(document).ready( function () {
    $('#example').dataTable( {
    "sScrollY": "460px",
    "sScrollX": "1050px",
    "bPaginate": false,
    "bFilter": false,
    "bInfo": false,
    "bSortable": true,
    "aaSorting": [[4,'asc']],
    "oLanguage": {"sZeroRecords": "", "sEmptyTable": ""}
    });
} );

3 个答案:

答案 0 :(得分:1)

由于datatables.net上的优秀人员,我得到了它的工作。我最终不得不覆盖默认行为,如果无法解析日期,则会返回-Infinity。

$.fn.dataTable.ext.type.order['date-pre'] = function ( d ) {
    return Date.parse( d ) || Infinity;
}

答案 1 :(得分:0)

这可能会对您有所帮助,因为它会将date视为String

因此,如果您注意到数据,则date排序为String,就像我现在设置aaSorting": [[4,'desc']]一样,所以它的排序方式如下:

  • 如果你看到每个日期的第一个字母,它就像2 ... 1 ... 0 ...同样适用于第2个,以及所有字符排序。

您可以将aaSorting属性值更改为此aaSorting": [[4,'desc']],然后它正在运行,我已更新它。

使用aaSorting": [[4,'desc']]代替aaSorting": [[4,'asc']]

Jsfiddle link
================================================== ========
如果您想在表格日期中将String转换为Date,请使用data-order属性,现在它将作为Date使用,并将数据排序为Date。< / p>

正如@patrick所说,它也将数据排序为数据类型date,但正如你提出的问题所提到的,它是string
如果您有任何疑问,可以在下面发表评论。

答案 2 :(得分:0)

您可以使用data-order属性,以便控制该列按该列的排序方式。

对于常规日期,请执行以下操作:

<td data-order="2016-09-06">06-Sep-2016</td>

对于空日期,请使用z

之类的内容
<td data-order="z"></td>

这是Fiddle

注意

这是一种很好的方法,因为您可以格式化以任何方式显示的日期。您不限于使用YYYY-MM-DD格式。