【问题标题】:Issue with sorting jquery datatables排序jquery数据表的问题
【发布时间】:2020-09-15 11:48:51
【问题描述】:

乍一看似乎排序很好,例如它从 2019 年一直到 2020 年排序,然后回到 2019 年及以后。 (日期格式 DD/MM/YYYY)。已包含下面的脚本和表格代码。有人可以帮忙吗?

我的代码如下...

     <script type="text/javascript">
                $(document).ready(function () {
                jQuery.extend( jQuery.fn.dataTableExt.oSort, {
                "date-uk-pre": function ( a ) {
                    var ukDatea = a.split('/');
                    return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
                },
        
                "date-uk-asc": function ( a, b ) {
                    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
                },
        
                "date-uk-desc": function ( a, b ) {
                    return ((a < b) ? 1 : ((a > b) ? -1 : 0));
                }
                } );
        
                    $('#tbl').DataTable({
                        stateSave: true,
                        order: [[9, 'asc']],
                        "aoColumns": [
                            null,
                            null,
                            null,
                            null,
                           {  "bSortable": false },
                            { "sType": "date-uk" },  //THIS IS THE ITEM I CLICK THE SORT BUTTON ON.
                            null,
                            null,
                            null,
                            { "sType": "date-uk" },
                             { "sType": "date-uk" },
                            null],
                      paging: false, "oLanguage": {
                        "sEmptyTable": "",
                        "sSearch": ""
                    }
                    });
        </script>

// Table code

    <table class="table  table-bordered" id="tbl">
    <thead>
        <tr>
            
            <th>
               Test Date sort 
            </th>
    
        </tr>
    </thead>

<tbody>
        <td>
            @Html.DisplayFor(modelItem => item.TestDate)
        </td>

</tbody>
</table>

【问题讨论】:

  • 按 DD/MM/YYYY 排序无论如何都会给您带来麻烦。您最好按时间戳或 YYYY/MM/DD 排序
  • 关于如何在 DataTables 中对日期和日期时间进行排序有很多问题。两个可能的答案是:(1)使用moment.js——例如,如图所示here;或 (2) 使用orthogonal data,它允许您存储不同版本的数据(例如“25/12/2020”用于显示目的,“20201225”用于排序目的)。
  • 只有一个单元格和一行;排序不会有太大作用。

标签: javascript jquery datatables


【解决方案1】:

感谢所有输入,这是解决方案:

将日期格式更改为:

@Convert.ToDateTime(item.TestDate).ToString("yyyy/MM/dd")

而不是 dd/mm/yyyy。然后从jquery中删除以下代码:

//jQuery.extend( jQuery.fn.dataTableExt.oSort, {
//"date-uk-pre": function ( a ) {
//    var ukDatea = a.split('/');
//    return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
//},

//"date-uk-asc": function ( a, b ) {
//    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
//},

//"date-uk-desc": function ( a, b ) {
//    return ((a < b) ? 1 : ((a > b) ? -1 : 0));
//}
//} );

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2014-04-11
    • 2019-10-21
    相关资源
    最近更新 更多