Extjs header column 自定义排序规则

Extjs 的表格自带排序功能,这个功能在大部分情况下能够满足我们的需求,但是在某种情况下,例如IP排序,默认情况下,按照字符串进行排序,

此时我们需要自定义排序规则,这个时候就需要我们重写方法了,

具体代码如下:

var grid = Ext.create('Ext.grid.Panel',{
    //...
    columns: [
        { text: 'name', dataIndex: 'name', sortable: true },
        {
            text: 'Custom',
            sortable : true,
            dataIndex: 'customsort',
           //重写此方法
            doSort: function(state) {
                var ds = this.up('grid').getStore();
                var field = this.getSortParam();
                ds.sort({
                    property: field,
                    direction: state,
                   //排序规则(重点)
                    sorterFn: function(v1, v2){
                        v1 = v1.get(field);
                        v2 = v2.get(field);
                        return v1.length > v2.length ? 1 : (v1.length < v2.length ? -1 : 0);
                    }
                });
            }
        }
    ]
   //....  
})        

解决方案参考:http://stackoverflow.com/questions/17795019/ext-js-sorting-custom-column-by-contents

原文地址:https://www.cnblogs.com/shinubi/p/5752400.html