如何使用jQuery对数据表alphabitecal和不区分大小写进行排序?

时间:2012-11-28 04:49:17

标签: jquery sorting datatable

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

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

5 个答案:

答案 0 :(得分:1)

这解决了我的问题:

'columnDefs': [

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

}]

答案 1 :(得分: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     

答案 2 :(得分: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

答案 3 :(得分:0)

我假设当你说jquery数据表时,你指的是Datatables.net的数据表插件。如果是这样,它看起来像从1.9版本开始,可以使用区分大小写的排序:

bCaseInsensitive

答案 4 :(得分:0)

datatables插件中的默认排序类型不区分大小写。但是,如果您使用SQL进行服务器端处理,则区分大小写来自数据库,而不是来自jquery.dataTables.js。要解决此问题,请找到SQL查询订单子句并将其更改为lower()。

如果您使用此处提供的示例:http://www.datatables.net/development/server-side/php_mysql 然后,更换第81行和第8行。 82使用下面的代码,你就完成了。

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

希望有所帮助。