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

EXTJS 4.2 - Grid Panel Multiple grid sorting

本文关键字:网格 排序 EXTJS      更新时间:2024-05-06

当在"电子邮件"列上触发网格面板排序时,我如何首先对"名称"列强制ASC排序,然后让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'
}],

但是,在对网格中的其他列进行排序后,排序器不再对"名称"进行优先级排序。

有什么建议吗?

在网格上使用headrclick事件怎么样。这将点击的列配置作为参数之一,因此基于此,您可以将自己的自定义排序应用于底层存储。

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

问题出在字段的命名上。您在排序器中大写了"Name",但实际字段是"Name"。

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

当我将其更改为"name"时,它将使用该名称和提供的任何其他排序程序进行排序。

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