Ext中文排序问题

来源:互联网 发布:矩阵列向量归一化公式 编辑:程序博客网 时间:2024/06/01 08:07

           国际上都是用ascii码进行排序,而按照汉语的使用习惯,我们需要按照拼音的首字母进行排序

          为了让Grid实现中文排序功能,我们需要重写Ext.data.Store的applySort函数

                         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"){                                  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.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") {                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.onReady(function(){    var cm = new Ext.grid.ColumnModel([        {header:'编号',dataIndex:'id',sortable:true,width:35},        {header:'名称',dataIndex:'name',sortable:true,width:80},        {id:'descn',header:'描述',dataIndex:'descn',sortable:true,width:200}    ]);    var data = [        ['1','啊','descn1'],        ['2','啵','descn2'],        ['3','呲','descn3'],        ['4','嘚','descn4'],        ['5','咯','descn5']    ];    var store = new Ext.data.Store({        proxy: new Ext.data.MemoryProxy(data),        reader: new Ext.data.ArrayReader({}, [            {name: 'id'},            {name: 'name'},            {name: 'descn'}        ]),        sortInfo: {field: "name", direction: "ASC"}    });    store.load();    var grid = new Ext.grid.GridPanel({        autoHeight: true,        renderTo: 'grid',        store: store,        cm: cm,        autoExpandColumn: 'descn'    });});



原创粉丝点击