EXTJS 4.2 - 网格面板多个网格排序

时间:2015-02-24 05:52:56

标签: javascript sorting extjs4 extjs4.2

当在“电子邮件”列上触发网格面板排序时,如何首先强制对“名称”列进行ASC排序,然后让EXTJS对“电子邮件”列执行排序。

我找到了以下正确方向的示例.. http://cdn.sencha.com/ext/gpl/4.2.0/examples/grid/multiple-sorting.html

...但我无法看到当用户点击列排序时如何在gridpanel中实现它,该示例直接使用针对商店的按钮...我认为我可以使用的唯一事件是gridpanel sortchange但是这是一个帖子排序事件。

我创建了一个小提琴示例https://fiddle.sencha.com/#fiddle/imt,我在商店中放置了一个分拣机

sorters: [{
    property: 'Name',
    direction: 'ASC'
}],

但是在使用网格中的其他列进行排序之后,分拣机不再优先考虑“名称”。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

如何在网格上使用headerclick事件。这会将单击的列配置作为其中一个参数,因此您可以将自己的自定义排序应用于底层商店。

答案 1 :(得分:0)

但两次排序真的有问题吗?否则你可以覆盖Ext.grid.header.ContainerView的headertriggerclick事件。

sortchange: function (ct, column, direction, eOpts ) {

 var store = column.up('gridpanel').getStore();

 store.sort([{
  property : 'name',
  direction: 'ASC'
 }, {
  property : column.dataIndex,
  direction: direction
 }]);

}

答案 2 :(得分:0)

问题在于字段的命名。你大写了名字'在分拣机中,但实际的字段是' name'。

 fields: [
    {name:'name'},
    {name:'summaryId'},
    {name: 'id'},
    {name:'email'},
    {name:'phone'},
],

当我将其更改为' name'时,它会与提供的那个和任何其他分拣机一起分类。

    sorters: [{
    property: 'name',
    direction: 'ASC'
    },{
    property:'email',
    direction: 'DESC'
    }],
相关问题