2012-11-28 41 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]) .", "; 

希望有所帮助。

相关问题