2012-11-28 74 views
5

我正在使用jquery數據表。 它顯示用戶列表(名字,姓氏等)。是否有可能設置,以便大寫字母之前小寫字母總是當我點擊姓氏升序排列。(區分大小寫)如何使用jQuery對datatable alphabitecal和不區分大小寫進行排序?

以下爲示例

FirstName LastName 
A    Xb <--X is Captial--> 
B    xa <-- x is small--> 
c    yc 

當我點擊的姓氏排序按升序顯示如下

FirstName LastName 

B    xa <--small--> 
A    Xb <--X is Captial--> 
c    yc 

是否有任何屬性可用的區分大小寫?

回答

0

這會幫助你

var names = [ 
    {"FirstName":"A", "LastName":"Xb"}, 
    {"FirstName":"B", "LastName":"xa"}, 
    {"FirstName":"C", "LastName":"yc"} 
]; 

names.sort(function(a, b) { 
    return a.LastName.toLowerCase().localeCompare(
     b.LastName.toLowerCase() 
    ); 
}); 

console.log(names); 

See it working on jsFiddle

0

你可以嘗試這樣的事: -

jQuery.fn.dataTableExt.oSort['string-case-asc'] = function(x,y) { 
return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['string-case-desc'] = function(x,y) { 
return ((x < y) ? 1 : ((x > y) ? -1 : 0)); 
}; 

排序性能已是通過準備數據爲 進行排序,然後進行排序。例如,對同一個字符串多次執行.toLowerCase()是毫無意義的 - 它總是會導致相同的結果。由於此類排序功能現在可以使用{type} -pre方法以及{type} -desc和{type} -asc 方法來準備數據。現在所有的內部分類方法都使用 這種方法。

source

+0

什麼是X和Y值?他們代表哪個價值? – Raje

+0

他們是我採取的變數。您可以根據您的要求更改它! –

0

我認爲,當你說jQuery的數據表,你的意思是在Datatables.net的數據表插件。如果是這樣,它看起來像1.9版本開始,區分大小寫的排序面世:在數據表插件

bCaseInsensitive

+0

我可以使用jquery 1.4.4版本。 – Raje

0

默認的排序類型不區分大小寫。但是,如果您使用SQL進行服務器端處理,則區分大小寫來自數據庫,而不是來自jquery.dataTables.js。爲了解決它,找到你的SQL查詢順序條款並將其更改爲lower()。

如果您使用此處提供的示例:http://www.datatables.net/development/server-side/php_mysql 然後,用下面的代碼替換行81 & 82,即可完成。

$sOrder .= 'upper('.$aColumns[ intval($_GET['iSortCol_'.$i]) ].") 
".mysql_real_escape_string($_GET['sSortDir_'.$i]) .", "; 

希望有所幫助。

相關問題