在使用 Extjs Grid 制作表格展示时,中文排序问题往往令人困扰——默认排序规则按照 Unicode 码点进行比对,导致“北京”排在“上海”后面,“啊”排在“爱”前面,完全不符合日常中文拼音顺序。究其原因,在于排序比较函数仅采用了 v1 > v2 这类数值型比较,遇到字符串时便无法正确排序。
解决方案其实很直接:重写 Ext.data.Store.prototype.applySort 方法,在字符串比较环节改用 localeCompare。该函数在 Firefox 和 IE 中均原生支持,能够依据拼音顺序正确比较汉字。具体实现代码如下:

复制代码 代码如下:
核心要点就在于 localeCompare 这一行。当检测到待比较值为字符串类型时,不再沿用默认的数值比较逻辑,而是调用本地化比较方法。如此一来,Grid 中的中文列即可按照拼音正确排序。如果你已经实现过类似功能,不妨检查一下自己的代码中是否遗漏了这个字符串判断分支——这正是确保兼容性的关键细节。
