我有一个sencha小提琴,因为它可以用来重现我在这里看到的问题:
https://fiddle.sencha.com/#fiddle/s2e
我看到的问题是,如果我通过单击Bart,Marge和Homer手动更改“名称”列上的过滤器,然后尝试对我在列列中添加的过滤器项进行排序......
columns: [
{
text : 'Name',
dataIndex : 'name',
filter : { type: 'list', value : 'Lisa'}
},
...覆盖我通过UI手动进行的选择。或者换句话说,“如果我点击Bart,Marge和Homer,它们就会出现在网格面板中,直到我对行进行排序。当我对行进行排序时,只会显示Lisa。”
这是一个错误还是我做错了什么?我不愿意认为这就是它的工作方式。
答案 0 :(得分:1)
该列不包括与value: 'Lisa'
不匹配的值
正如@afschr上面所说 - 删除价值,param将具有这种功能。
filter : { type: 'list'}
答案 1 :(得分:0)
这可能是一个错误。当然,您可以按照Akin所说更改过滤器。但是,如果您由于某些原因不想更改该过滤器,也可以采用一种解决方法。您可以在完成排序后停止排序事件,以使过滤器不会重置为已设置的默认过滤器( filter: { type: 'list', value : 'Lisa'}
。
为此,您需要在视图文件夹中更改主网格面板,并向其添加“ sortchange”侦听器,如下所示:
Ext.define('MVC.view.Master', {
extend : 'Ext.grid.Panel',
xtype : 'mvc-MasterView',
title : 'Master Panel',
store : 'People',
plugins: 'gridfilters',
selModel: {
cellSelect: false,
type: 'spreadsheet'
},
// The code you should add.
listeners: {
sortChange: function() {
this.stopEvent()
}
},
// End of code addition
columns: [
{
text : 'Name',
dataIndex : 'name',
filter : { type: 'list', value : 'Lisa'}
},
{
text : 'Email',
dataIndex : 'email',
flex : 1
},
{
text : 'Phone',
dataIndex : 'phone'
}
]
});