EXT.js对中文字符串的排序

2024-06-11 02:48
文章标签 字符串 js 中文 排序 ext

本文主要是介绍EXT.js对中文字符串的排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自http://blog.163.com/guyywan_1314/blog/static/12885425020113274431890/

问题详述:我列表有一列name名称列  内容大概是  "桂花_S1"、"桂花_S2"、"桂花_S12"、"桂花_S3"、"桂花_S4"、"桂花_S5"、"桂花_S51"、"桂花_S6" 默认我们点列头的时候  肯定是  桂花_S1、桂花_S12、桂花_S2、桂花_S3.。。。。

但我要的效果是  桂花_S1、桂花_S2、桂花_S3、桂花_S4、桂花_S5、桂花_S6、桂花_S12、桂花_S51

我的思路的 重写ext本身的升降序方法:

Ext.data.Store.prototype.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]);           
            if (typeof(v1) == "string") {  
             var i1 = v1.indexOf("_S");
                var i2 = v2.indexOf("_S");
                if(i1 != -1 && i2 != -1){
                    i1 = parseInt(i1) +2;
                    i2 = parseInt(i2) +2;
                    var num1 =v1.substring(i1);
                    var num2 =v2.substring(i2);                   
                    num1 = parseInt(num1);
              num2 = parseInt(num2);
              return num1 > num2 ? 1 : (num1 < num2 ? -1 : 0);
                }
               return v1.localeCompare(v2);  
            }
            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-all.js  或者html页面顶部。 保证页面打开加载到就行。

主要代码在if (typeof(v1) == "string")这个{}里面。注意的是肯定是有规律的。比如这个是比较_S后台的数字。

当然,如果刚grid数据加载的时候 就要排该列,这样写:

var gridStore = new Ext.data.JsonStore({
   url : 'test.jsp', 
   root : 'items',
   fields : ['id', 'name', 'name2', 'name3', 'addTime'],
   autoLoad : true,
   sortInfo: {field: 'name', direction: 'ASC'}  //关键代码  默认排序项name
  }); 

效果见图:

Extjs gridPanel分页自定义排序方式、 重写升序降序方法、grid字符串列按数字排序 - 雨缘 - 媛媛的博客

 

这篇关于EXT.js对中文字符串的排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050001

相关文章

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Python中lambda排序的六种方法

《Python中lambda排序的六种方法》本文主要介绍了Python中使用lambda函数进行排序的六种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1.对单个变量进行排序2. 对多个变量进行排序3. 降序排列4. 单独降序1.对单个变量进行排序

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字