Ext store 实现汉字排序
Ext.data.Store应用中,有的时候我们对记录的某列进行排序,如果该列的值含有汉字的话,那么对该列进行排序的后,这些记录对于我们来说,就没有什么规律可言。但是我们可以通过修改Ext.data.Store的sortData方法达到汉字排序的效果。
而实现汉字排序方法的关键点就是javascript的localeCompare方法。
该方法的用法是:stringVar.localeCompare(stringExp)
?
说明:localeCompare 可以对 stringVar 和 stringExp 进行一个区分区域设置的字符串比较并返回 –1、0 或 +1,这取决于系统中缺省区域设置的排序。
?
实现Ext.data.Store汉字排序的关键点:
Ext.data.Store.prototype.sortData= function(f, direction){ direction = direction || 'ASC'; var st = this.fields.get(f).sortType; var fn = function(r1, r2){ var v1 = st(r1.data[f]), v2 = st(r2.data[f]);if (typeof(v1) == "string") { return v1.localeCompare(v2);//实现排序的关键语句 } return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0); }; this.data.sort(direction, fn); if(this.snapshot && this.snapshot != this.data){ this.snapshot.sort(direction, fn); } };
??
?