无法对筛选过的网格面板进行排序(带小提琴)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法对筛选过的网格面板进行排序(带小提琴)相关的知识,希望对你有一定的参考价值。

我有一个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。”

这是一个错误还是我做错了什么?我不愿意认为这就是假设工作的方式。

答案

该列不包括与value: 'Lisa'不匹配的值。如上所述@afschr - 删除该值,param将具有此功能。

filter   : { type: 'list'}
另一答案

这可能是一个错误。当然,你可以像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' 
        }
    ]
});

以上是关于无法对筛选过的网格面板进行排序(带小提琴)的主要内容,如果未能解决你的问题,请参考以下文章

网格组合树形面板 EXTJS

Jquery UI 结合了可排序和可拖动

我们如何在 ext js 4.2 中突出显示网格面板的行和列?

为啥我的 ExtJS 4.2 网格面板排序不起作用?

需求分析

cxgrid对经过筛选过的数据的选择(反选)