몇 줄 코드로 Grid 중국어 정렬 오류 해결
applySort: function(){
if(this.sortInfo && !this.remoteSort){
var s = this.sortInfo, f = s.field;
var st = this.fields.get(f).sortType;
var fn = function(r1, r2){
var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
// :
};
this.data.sort(s.direction, fn);
if(this.snapshot && this.snapshot != this.data){
this.snapshot.sort(s.direction, fn);
}
}
}
정렬 원리를 알게 되면 우리는 한자의'정상'정렬을 쉽게 실현할 수 있다. 그 방법은 Ext.data를 만드는 것이다.스토어 대상의 실례 전에 이 applysort 함수를 다시 불러옵니다.코드는 다음과 같습니다.
// Ext.data.Store.prototype.applySort DataStore
// var _applySort = Ext.data.Store.prototype.applySort;
// , applySort
Ext.data.Store.prototype.applySort = function(){
// applySort
if(this.sortInfo && !this.remoteSort){
var s = this.sortInfo, f = s.field;
var st = this.fields.get(f).sortType;
var fn = function(r1, r2){
var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
// : Bug
if(typeof(v1) == "string"){ // ,
return v1.localeCompare(v2);
// localeCompare , Firefox IE
}
//
return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
};
this.data.sort(s.direction, fn);
if(this.snapshot && this.snapshot != this.data){
this.snapshot.sort(s.direction, fn);
}
}
};
var ds = new Ext.data.Store(......);// 。。。
관건은 문자열 유형의 변수에 대해 현지화된 문자열 비교 함수localeCompare () 로 기존의 간단한 변수 비교를 대체하는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ExtJS 3.2 학습 노트(3) 사용자 정의 이벤트Extjs에서 모든 상속은 Ext.util에서 합니다.Observable 클래스의 컨트롤은 이벤트를 지원할 수 있습니다. 클래스에 대해 이벤트를 사용자 정의하려면 다음 절차를 따르십시오. 1, 먼저 클래스를 정의합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.