簡體   English   中英

如何使用 jQuery 對數據表 alphabitecal 和不區分大小寫進行排序?

[英]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);

看看它在 jsFiddle 上工作

你可以嘗試這樣的事情:-

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 版開始,區分大小寫的排序變得可用:

b 不區分大小寫

數據表插件中的默認排序類型不區分大小寫。 但是,如果您使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM