20

这是页面:

http://csuvscu.com/

我需要按日期列排序,现在它需要读取 11 月 6 日、11 月 5 日和最后 10 月 7 日。

我该怎么做呢?

4

7 回答 7

57

您当前的代码:

$('table').dataTable({
    // display everything
    "iDisplayLength": -1
});

你可以做什么:

oTable = $('table').dataTable({
    // display everything
    "iDisplayLength": -1
});

oTable.fnSort( [ [0,'desc'] ] ); // Sort by first column descending

但正如下面评论中所指出的,这可能是一种更清洁的方法:

$('table').dataTable({
    // display everything
    "iDisplayLength": -1,
    "aaSorting": [[ 0, "desc" ]] // Sort by first column descending
});
于 2011-10-24T15:46:26.137 回答
13

DataTables 使用字母顺序作为默认排序方法。这实际上就是这里发生的事情。

有两种解决方法:

  • 定义自己的日期排序方法
  • 使用包含 Unix 时间戳(自 1970 年 1 月 1 日以来经过的秒数)中的日期的隐藏列对表进行排序。

如果您希望您的用户能够自己对列进行排序,您可以使用第一个解决方案。

--------------- 第一个解决方案:

我们需要告诉 DataTable 插件如何处理我们的列。您需要使用“aoColumns”属性:

$('table').dataTable({
    // display everything
    "iDisplayLength": -1,
    "aoColumns":[
        {"sType": "shaheenery-date"},
        {"bSortable": true},
        {"bSortable": true},
        {"bSortable": true},
        {"bSortable": true}
    ]
});

然后定义“shaheenery-date-asc”和“shaheenery-date-desc”排序方法。您还需要一个函数“getDate”,将日期转换为数字格式:

function getDate(a){
        // This is an example:
        var a = "Sunday November 6, 2011";
        // your code =)
        // ...
        // ...
        // You should output the result as YYYYMMDD
        // With :
        //   - YYYY : Year
        //   - MM : Month
        //   - DD : Day
        //
        // Here the result would be:
        var x = 20111106
        return x;
}

jQuery.fn.dataTableExt.oSort['shaheenery-date-asc'] = function(a, b) {      
        var x = getDate(a);
        var y = getDate(b);
        var z = ((x < y) ? -1 : ((x > y) ? 1 : 0));
        return z;
};

jQuery.fn.dataTableExt.oSort['shaheenery-date-desc'] = function(a, b) {
        var x = getDate(a);
        var y = getDate(b);
        var z = ((x < y) ? 1 : ((x > y) ? -1 : 0));
        return z;
    };

--------------- 第二种解决方案:

我们也将使用“aoColumns”属性。这次我们告诉 DataTable 隐藏最后一列,它将包含 Unix Timestamp 中的日期。我们还需要将此列定义为使用“aaSorting”进行排序的默认列:

$('table').dataTable({
    // display everything
    "iDisplayLength": -1,
    "aaSorting": [[ 5, "desc" ]],
    "aoColumns":[
        {"bSortable": false},
        {"bSortable": true},
        {"bSortable": true},
        {"bSortable": true},
        {"bVisible": false}
    ]
});
于 2011-10-24T16:12:55.867 回答
2
oTable = $('#DataTables_Table_0').dataTable({   //table id -->DataTables_Table_0

    iVote: -1,  //field name 
    "bRetrieve":true

});

 oTable.fnSort( [ [1,'desc'] ] );   // Sort by second column descending
于 2013-08-16T05:36:16.933 回答
2

使用最新版本的数据表,您可以按列索引排序

var data_table = $('#data-table').DataTable();
data_table.order( [7,'desc'] ).draw();

希望这可以帮助。

于 2017-02-16T15:30:37.213 回答
1
$('#id').dataTable({
     “bSort”:是的,
     “aoColumnDefs”:[{
         'bSortable':假,
         “目标”:[1]}
      ]
});
于 2016-04-25T06:40:41.237 回答
1

现有答案使用旧版 DataTables 语法。1.10+ 版本应该使用以下语法:

$('table').dataTable({
    "pageLength": -1,  //display all records
    "order": [[ 0, "desc" ]] // Sort by first column descending
});

参考:

于 2016-07-26T17:56:07.973 回答
-2

$('#id').dataTable({

""aaSorting": [[ "0", "<"desc" 或 asc>"]]

});

于 2018-09-12T09:21:32.080 回答