ExtJS 6.2.0 增加中文排序支持

网上现有的仅包含旧版的扩展方式,总结核心实现为将默认的字符串比较方式重写为使用JavaScript的localeCompare方法进行字符串顺序比较。

最近项目中使用的为ExtJS 6.2.0,旧版的重写applySort的方式无法使用,于是自行跟踪源码,找出了针对新版的中文排序实现方式。

核心原理为重写Ext.util.Sorter类的sortFn,当比较值为字符串时使用localeCompare进行比较并直接返回值,localeCompare的可能返回值为-1、0、1。

详见如下代码:

/**
 * 解决汉字排序问题
 */
Ext.override(Ext.util.Sorter, {
    sortFn: function (item1, item2) {
        var me = this,
            transform = me._transform,
            root = me._root,
            property = me._property,
            lhs, rhs;

        if (root) {
            item1 = item1[root];
            item2 = item2[root];
        }

        lhs = item1[property];
        rhs = item2[property];

        if (transform) {
            lhs = transform(lhs);
            rhs = transform(rhs);
        }

        //添加:修复汉字排序
        if (typeof(lhs) == "string") {//若为字符串
            return lhs.localeCompare(rhs, ‘zh‘);//则localeCompare比较汉字字符串,Firefox与IE均支持
        }//添加结束

        return (lhs > rhs) ? 1 : (lhs < rhs ? -1 : 0);
    }
});

原文地址:https://www.cnblogs.com/mightyvincent/p/8207176.html

时间: 2024-10-09 05:35:47

ExtJS 6.2.0 增加中文排序支持的相关文章

Unicode 7.0.1中文支持非常好

简单测试了一下,7.0.1中文支持非常好.Delphi7下将UniConnection的useUnicode设置为False,Tokyo下设置为True,Charset空着即可. 问题要点:1.建数据库时:CREATE TABLE 数据库名 (字段名 varchar(40)) DEFAULT CHARSET=utf8; 2.my.ini配置[mysqld]character-set-server=utf8 用mysql命令显示应该这这个样子: show variables like 'char%

jQuery的dataTables插件实现中文排序

最近在写Java web. 写JSP的时候发现一个很好玩的插件dataTables.分页.过滤.排序等等手到擒来. 哎哎哎,有点点可惜的是排序这个功能不支持中文.于是网上查查找找,现在把方法整理一下,与君共享. 1 <script type="text/javascript"> 2 3 // oSort是排序类型数组, 'chinese-asc'是自己定义的类型的排序(*-asc || *-desc)名称 4 // 插件应该会根据表格中的内容的类型(string, numb

最新版勤哲Excel服务器V2016.12.0.292无限用户支持手机APP,微信,网页等功能不绑定电脑,任意安装,支持后续升级

最新版勤哲Excel服务器V2016.12.0.292无限用户支持手机APP,微信,网页等功能不绑定电脑,任意安装,支持后续升级. 这个版本发布过之后,再发布新的版本需要到下个月的中下旬,老朋友可以使用本版本后面延续升级 目前有大约127家用户在用,没有修改过注册授权文件,系统非常成熟,推荐指数为五星,QQ:619920289 麦枫论坛http://www.mfsun.com 简介 EXCEL服务器作为一款客户化.综合性管理软件,它通过Excel就能构造出您自主的管理系统:同时,她也可将您公司现

FlashFXP 5.0.0官方中文破解版,附文件下载地址和破解码

FlashFXP 5.0.0官方中文破解版是一个功能强大的 FXP/FTP 软件,融合了一些其他优秀 FTP 软件的优点,如像 CuteFTP 一样可以比较文件夹,支持彩色文字显示:像 BpFTP 支持多文件夹选择文件,能够缓存文件夹:像 LeapFTP 一样的外观界面,甚至设计思路也差相仿佛.支持文件夹(带子文件夹)的文件传送.删除:支持上传.下载及第三方文件续传:可以跳过指定的文件类型,只传送需要的文件:可以自定义不同文件类型的显示颜色:可以缓存远端文件夹列表,支持FTP代理及 Socks

PHP与MYSQL中UTF8 中文排序例子

1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行.用gbk和gb2312可以.这跟几种格式的编码有关系.gbk和gb2312本身的编码就是用拼音排序的. 代码如下 复制代码 function utf8_array_asort(&$array){if(!isset($array) || !is_array($array)){return false;}foreach($array as $k=>$v){$array[$k] = iconv('UTF-

我与solr(六)--solr6.0配置中文分词器IK Analyzer

转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无法进行正确的高亮显示.现在配置一下分词器来解决相关问题. solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持solr6.0这个高版本的,所以就会发送运行

iOS 中文排序

这里分享一个中文排序的一个便捷方法,整理了一个网络的资源自己封装成一个类别方便以后使用, 这里贴出使用的方法,源码可以在本文最后下载. 要记得加头文件 #import "NSArray+SortedChinAndEng.h" 这个头文件在源码中. NSArray *[email protected][ @"小明", @"微博", @"你好", @"小米", @"腾讯", @"再

关于字典与数组的倒叙,自定义排序,中间目录、中文排序

// //  main.m //  10.1.2 // //  Created by fwzx11 on 16/1/10. //  Copyright (c) 2016年 Blue Mobi. All rights reserved. // #define NSLog(FORMAT, ...) fprintf(stderr,"%s\n",[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #import &l

WebAPI增加Area以支持无限层级同名Controller

原文:WebAPI增加Area以支持无限层级同名Controller 微软的WebAPI默认实现逻辑 默认实现中不支持同名Controller,否则在访问时会报HttpError,在网上找到了各种路由自实现,如 给ASP.net Web API的Controller分类 搭建MVC及WebAPI项目框架时碰到的问题集合 在上述地址的帮助下,根据需求,重新编写了AreaHttpControllerSelector,路由原理与上述地址大同小异,均是通过路由匹配拼接FullName,然后匹配最接近的A