繁体   English   中英

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

[英]EXTJS 4.2 - Grid Panel Multiple grid sorting

当在“电子邮件”列上触发网格面板排序时,如何在“名称”列上强制执行A​​SC排序,然后对EXTJS执行对“电子邮件”列的排序。

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

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

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

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

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

有什么建议?

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

但这真的是一个排序两次的问题吗? 否则,您可以覆盖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
 }]);

}

问题在于字段的命名。 您在分拣机中将“名称”大写,但实际字段为“名称”。

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

当我将其更改为“名称”时,它会使用该名称和任何其他分拣机进行分类。

    sorters: [{
    property: 'name',
    direction: 'ASC'
    },{
    property:'email',
    direction: 'DESC'
    }],

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM