当在“电子邮件”列上触发网格面板排序时,如何首先强制对“名称”列进行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'
}],
但是在使用网格中的其他列进行排序之后,分拣机不再优先考虑“名称”。
有什么建议吗?
答案 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'
}],