DataTable:td内日期的自定义排序

Posted

技术标签:

【中文标题】DataTable:td内日期的自定义排序【英文标题】:DataTable: Custom Sorting on date inside td 【发布时间】:2017-05-28 12:06:00 【问题描述】:

我有一个 JQuery DataTable,它运行良好,但在特定列上,排序没有按我的意愿工作。

在该列中有一些不同类型的值,例如 DateNumberText,如下所示:

我想在 Date 字段上实现自定义排序。

有小伙伴知道怎么实现吗?

有什么方法可以在<td> 中的特定<span> 标记上应用自定义排序。我可以在日期周围应用<span> 标签。

或者

采用另一种方式来实现这种类型的排序。

我阅读了太多文章,但没有发现任何有用的文章。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

此链接可能对您有所帮助:***.com/questions/35882936/… @SorangwalaAbbasali:感谢您的留言,但这对我没有帮助。 ( 这就是你需要的。只需稍加修改,您就可以对日期进行排序jsfiddle.net/rYtxh/4 【参考方案1】:

试试这个方法:

$("#example").DataTable(
    columns:[
        null, 
        null, 
        null, 
        null,
        
            "render": function(d)
                return $("<span></span>",
                    "text": d,
                    "data-date": d.match(/[0-9]2[\/][0-9]2[\/][0-9]4$/)[0]
                ).prop("outerhtml");
            ,
            "type": "data-date"
        , 
        null
    ]
);

jQuery.extend(jQuery.fn.dataTableExt.oSort, 
    "data-date-pre": function(a) 
        return parseInt(moment($(a).data("date"), "DD/MM/YYYY").format("X"), 10);
    ,
    "data-date-asc": function(a, b) 
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    ,
    "data-date-desc": function(a, b) 
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    
);

基本上,我们将相关数据包装在一个跨度中,并将提取的日期作为数据属性添加。然后我们对此进行排序。希望有帮助。使用类似数据处理 JSFiddle。

【讨论】:

以上是关于DataTable:td内日期的自定义排序的主要内容,如果未能解决你的问题,请参考以下文章

具有标签的 DataRows 的自定义 DataTable

ngx-datatable - 带有操作按钮的自定义列

Excel多条件自定义排序

SQLite SELECT查询中的自定义字段填充后不会成为DataTable中的DateTime列?

元素 <td> 内的自定义占位符未显示 [重复]

Wordpress 在自定义帖子类型存档页面上按日期排序