【问题标题】:DataTable dd-mm-yyyy format not showing ascending properlyDataTable dd-mm-yyyy 格式未正确显示升序
【发布时间】:2018-07-15 08:31:37
【问题描述】:

我看了很多,但我的日期列仍然没有排序, 我可以在我的 gsp 中看到来自后端的代码与按日期升序过滤的方式完全相同

ORDER BY STR_TO_DATE(invoiceDate, '%d-%m-%Y') ASC

但在添加到 DataTable 后,排序不起作用。但是如果 return type 是来自 mysql 的 datetime,则它可以正常工作。

ORDER BY invoiceDate ASC // this works fine

我的前端代码如下:

  1. 在前端:(日期列左起第三个)

    $( document ).ready(function() {
        $('#customerOutstandingTable').dataTable({
            "paging":   false,
            "aaSorting": [[ 2, "asc" ]],
        });
    });
    

我正在附上图片。

数据库值:

数据显示错误:

即使我将 datetimefront-end 转换为 dd-mm-yyyy,它仍然显示错误。

有什么想法吗?

【问题讨论】:

  • 你可以访问底层的排序功能吗?
  • 如果数据从服务端来的时候已经排序好了,为什么还要用dataTable来排序呢?看起来日期只是通过传统的字符串排序进行排序,这根本没有考虑到字符串应该是日期。
  • 我已经添加了排序,因为它没有正确排序数据,所以我添加了那一行 ' "aaSorting": [[ 2, "asc" ]],' @kshetline
  • 您必须将日期格式化为 YYYY-MM-DD,以便基本字符串排序以正确顺序对日期进行排序。如果您将它们保存为 DD-MM-YYYY 形式,则需要自定义排序功能。
  • 没有@DiabolicWords

标签: javascript jquery datatable datatables


【解决方案1】:

您没有正确排序。 你不应该从一天开始排序,但你必须从年开始,然后看月份,最后看一天。

假设你有:

03-05-2018

01-06-2018

2017 年 12 月 12 日

如果你从你应该得到的那一天开始排序:

01-06-2018

03-05-2018

2017 年 12 月 12 日

这是错误的顺序。

【讨论】:

  • 感谢您的概念!但是即使我不对前端的排序代码进行排序或注释,我也希望直接附加我的后端结果,它在附加到前端 dataTable @Source 后不显示排序数据@Source
  • 这对您有帮助吗? stackoverflow.com/questions/10500945/…
猜你喜欢
  • 2019-10-29
  • 2016-01-02
  • 1970-01-01
  • 2013-12-10
  • 2013-08-31
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多