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