我使用的是jQuery插件Datables:http://www.datatables.net/
我的例子在这里:http://live.datatables.net/wanebotu/1/edit
我的示例表中有几列,其中一列是“Name”。我添加了一些相同的名称,但一个以大写开头,另一个全部小写。例如:阿什顿考克斯,阿什顿考克斯。但是,我确实认为数据表中使用的默认排序不区分大小写,这意味着排序是“稳定的”(如果我错了,请纠正我)。
我的问题是,当我对它进行排序时,列变得不一致。如果它是升序,大写字母将首先出现在第一行是Ashton Cox然后是ashton cox的意义上。如果是下降,最后一行是阿什顿考克斯,那么最后一排是阿什顿考克斯。
因此,如何编写自定义排序,使得最后一行首先为大写,以便降序,如果它是相同的单词但是大写。
E.g. for ascending:
Ashton Cox
ashton cox,
Colleen Hurst
colleen Hurst
E.g. for descending:
colleen hurst,
Colleen Hurst,
ashton cox
Ashton Cox
很抱歉,如果这一切听起来很复杂。这是一个令人困惑的问题,令人困惑的要求。
答案 0 :(得分:0)
让这个使用以下代码:
$.extend( $.fn.dataTableExt.oSort, {
"casetext-pre": function ( a ) {
return a[0].toLowerCase()+a;
},
"casetext-asc": function ( a, b ) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"casetext-desc": function ( a, b ) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );
$(document).ready( function () {
var table = $('#example').DataTable({
"aoColumns": [{
"sType": "casetext"
},null,null,null,null,null]
});
} );
这将定义一个新的排序函数/类型,它将数据的第一个字符转换为小写,然后附加原始字符串数据。
请注意,必须在aoColums
中设置数据类型。 (在这个例子中,我只关心具有特定类型的名称)。 null
的数量应与您的列匹配。
这没有经过彻底的测试,但它应该给你提示如何继续。
以下是您修改后的example