2011-10-24 74 views
17

這裏的頁面:Jquery DataTables,按特定列排序?

http://csuvscu.com/

我需要的日期列進行排序,現在它需要讀11月6日,11月5日,最後月7

我該怎麼辦呢?

+2

我會建議在您的問題中添加一些適用的代碼。是的,一個人可以訪問您鏈接的頁面並查看源代碼,但是想法是,只要您提供了所需的信息,即使您的網站在將來某個時間停止運行,代碼仍然可用。 –

+0

看看下面的[post](http://www.codeunit.co.za/2010/04/04/jquery-datatables-how-to-sort-by-a-specific-column-on-load /) –

+0

@KileyNaro在網站關閉方面提供了一個很好的觀點,我仍然保持鏈接 - 這對我來說不需要在本地計算機上重新創建一個像這樣的測試很好 - 在Chrome瀏覽器中完成了所有操作控制檯:) – shaheenery

回答

49

您當前的代碼:

$('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 
}); 
+0

非常感謝你! –

+1

不客氣...作爲@emmanual N linked_to上面,你可以使用這種形式,這是我認爲'$('table')清潔劑的形式。dataTable({iDisplayLength「:-1 」aaSorting「 :[[0,「desc」]] });' – shaheenery

+0

當我試圖在Java方法中設置選項,我錯過了一些東西。你能不能把它添加到Java方面呢? –

12

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最新-ASC」 和 「shaheenery最新-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時間戳中的日期。我們還需要定義此列設置爲默認一個與「aaSorting」排序:

$('table').dataTable({ 
    // display everything 
    "iDisplayLength": -1, 
    "aaSorting": [[ 5, "desc" ]], 
    "aoColumns":[ 
     {"bSortable": false}, 
     {"bSortable": true}, 
     {"bSortable": true}, 
     {"bSortable": true}, 
     {"bVisible": false} 
    ] 
}); 
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 
1
 $('#id').dataTable({ 
    "bSort": true, 
    "aoColumnDefs": [{ 
     'bSortable': false, 
     'aTargets': [ 1 ] } 
     ] 
}); 
1

現有的答案是使用傳統的數據表的語法。版本1。10+應使用以下語法:

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

參考:

1

隨着數據表的最新版本,您可以通過列索引排序

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

希望這會有所幫助。