根据ExtJs 4.1网格中的另一列对一列进行排序

时间:2012-05-04 08:47:39

标签: extjs4.1 extjs-grid extjs-stores

我正在使用ExtJs 4.1框架。我有一个网格,只显示一列(名称)。网格与具有两个字段(Name和SortOrder)的商店相关联。字段" name" in store与网格的Name列相关联。我想根据商店中SortOrder字段中可用的值对名称列进行排序。我怎样才能实现这样的逻辑。

谢谢

3 个答案:

答案 0 :(得分:20)

还有一个更简单的解决方案:

...
columns: [{
    header: 'Name',
    dataIndex: 'Name',
    sortable: true,
    getSortParam: function() {
        return 'SortOrder';
    }
...
}]
...

因此,您可以覆盖getSortParam()方法(由doSort()使用),而不是覆盖doSort()。

答案 1 :(得分:4)

你的意思是这样的:

...
columns: [{
    header: 'Name',
    dataIndex: 'Name',
    sortable: true,
    doSort: function(state){
        var ds = this.up('tablepanel').store;
        ds.sort({
            property: 'SortOrder',
            direction: state
        });
    }
    ....    
}]

答案 2 :(得分:0)

另一种方法是在标题点击上执行此操作。

columns: [
    {
        header: 'Name',
        dataIndex: 'Name',
        listeners: {
            headerclick: function() {
                var store = this.up('grid').getStore();
                store.sort({
                        property: 'SortOrder',
                        direction: this.sortState
                    });
            }
        }
    }
 ]