[英]How to sort datatable alphabitecal and case insensitive using jQuery?
我正在使用 jquery 數據表。 它顯示用戶列表。(名字,姓氏等)。 當我點擊姓氏的升序時,是否可以設置大寫字母總是在小寫字母之前。(區分大小寫)
以下是示例
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
是否有任何可用的屬性區分大小寫?
這解決了我的問題:
'columnDefs': [
'targets': 0,
'render': function(data, type, row, meta){
return type === "sort" ? data.toLowerCase() : data;
}]
這應該可以幫助你
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);
你可以嘗試這樣的事情:-
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 方法來准備數據。 現在所有的內部排序方法都使用這種方法。
從源頭
我假設當您說 jquery數據表時,您指的是Datatables.net 上的數據表插件。 如果是這樣,看起來從 1.9 版開始,區分大小寫的排序變得可用:
數據表插件中的默認排序類型不區分大小寫。 但是,如果您使用 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] ) .", ";
希望有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.