【问题标题】:EXTJS 4.2 - Grid Panel Multiple grid sortingEXTJS 4.2 - 网格面板多重网格排序
【发布时间】:2015-02-24 05:52:56
【问题描述】:

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

我发现下面这个例子是正确的。http://cdn.sencha.com/ext/gpl/4.2.0/examples/grid/multiple-sorting.html

...但是当用户单击列排序时,我看不到如何在网格面板中实现此功能,该示例直接使用按钮来存储商店...我认为我可以使用的唯一事件是网格面板 sortchange 但是这是一个帖子排序事件。

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

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

但在对网格中的其他列排序后,排序器不再优先考虑“名称”。

有什么建议吗?

【问题讨论】:

  • 不知道为什么我对一个合法的问题投了反对票??

标签: javascript sorting extjs4 extjs4.2


【解决方案1】:

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

【讨论】:

  • 谢谢,会调查,感谢您的意见。
  • Mindparse,您能否详细说明我将如何扩展此处传递的 conig?
【解决方案2】:

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

}

【讨论】:

  • 谢谢,试过了,但它使网格排序无响应,我会查看覆盖...
【解决方案3】:

问题在于字段的命名。您在排序器中将“姓名”大写,但实际字段为“姓名”。

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

当我将其更改为“名称”时,它会使用该名称和提供的任何其他排序器进行排序。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 2011-08-06
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多