5

我正在使用 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

是否有任何可用的属性区分大小写?

4

5 回答 5

1

这解决了我的问题:

'columnDefs': [

 'targets': 0,      
 'render': function(data, type, row, meta){                                                     
  return type === "sort" ? data.toLowerCase() : data;

}]
于 2021-02-17T14:11:24.647 回答
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);

​</p>

看看它在 jsFiddle 上的工作情况 </p>

于 2012-11-28T04:52:57.780 回答
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 方法来准备数据。现在所有的内部排序方法都使用这种方法。

源头

于 2012-11-28T04:55:39.197 回答
0

我假设当您说 jquery 数据表时,您的意思是Datatables.net上的数据表插件。如果是这样,看起来从 1.9 版开始,区分大小写的排序变得可用:

b不区分大小写

于 2012-11-28T04:55:53.873 回答
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] ) .", ";

希望有帮助。

于 2014-04-08T03:10:24.243 回答