ExtJS4.2学习(四)Grid表格中文排序问题

php中文网
发布: 2016-06-07 15:07:00
原创
1547人浏览过

我们在表中指定某列排序的时候,我发现排序的时候,中文并没有很好的按照规律排序,国际上都使用ASCII码进行排序,而我们却拼音排序,Ext自动排好的中文在我们看起来是一团糟。 如下代码数据: 1 2 3 4 5 6 7 var data =[ [ '1' , '啊' , '描述01' ], [ '2'

我们在表格中指定某列排序的时候,我发现排序的时候,中文并没有很好的按照规律排序,国际上都使用ASCII码进行排序,而我们却拼音排序,Ext自动排好的中文在我们看起来是一团糟。

如下代码数据:

1

2

3

4

5

6

7

var data =[

        ['1','啊','描述01'],

        ['2','波','描述02'],

        ['3','呲','描述03'],

        ['4','嘚','描述04'],

        ['5','咯','描述05']

    ];

为了立刻看到效果,我们通过sorters属性来为Ext.data.ArrayStore设置一个默认的排序方式,如下面的代码:

1

2

3

4

5

6

7

8

9

var store = new Ext.data.ArrayStore({

data:data,

fields:[

   {name:'id'}, //mapping:0 这样的可以指定列显示的位置,0代表第1列,可以随意设置列显示的位置

   {name:'name'},

   {name:'descn'}

],

sorters:[{property:"name",direction:"ASC"}] //给定一个默认的排序方式

});

效果就是下面这样:
ExtJS4.2学习(四)Grid表格中文排序问题
解决办法如下代码,你可以把这段代码放到ext-all.js文件的最后,或者放到HTML页面的最上面,总之要在Ext初始化之后,实际代码调用之前执行。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

Ext.data.Store.prototype.createComparator = function(sorters){

    return function(r1, r2){

        var s = sorters[0], f=s.property;

        var v1 = r1.data[f], v2 = r2.data[f];

               

        var result = 0;

        if(typeof(v1) == "string"){

            result = v1.localeCompare(v2);

            if(s.direction == 'DESC'){

                result *=-1;

            }

        } else {

            result =sorters[0].sort(r1, r2);

        }

               

        var length = sorters.length;

               

        for(var i = 1; i

            s = sorters[i];

            f = s.property;

            v1 = r1.data[f];

            v2 = r2.data[f];

            if(typeof(v1) == "string"){

                result = result || v1.localeCompare(v2);

                if(s.direction == 'DESC'){

                    result *=-1;

                }

            } else {

                result = result || s.sort.call(this, r1, r2);

            }

        }

        return result;

    };

};

现在来运行,效果如下:
ExtJS4.2学习(四)Grid表格中文排序问题
效果看起来不错。

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号