2

列'hiddenFlag'のグリッドにデフォルトのリモートフィルターを追加しましたが、最初の読み込みではアクティブになりません。列ヘッダーメニューをクリックすると、フィルターがアクティブになっているように見えますが、レコードは適切になりました。非アクティブ化してから再度アクティブ化する必要があります。

フィルタはアクティブになっているようですが、アクティブではありません。

どのように、最初のロードでもアクティブになるように構成できますか?

Ext.define('Ext.migration.CommentGrid', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.commentgrid',            
    xtype: 'grid',
    initComponent: function(){
        filePath = "";
        this.filters = {
                ftype: 'filters',
                encode: false, // json encode the filter query
                local: false, //only filter locally
                filters: [{
                    type: 'numeric',
                    dataIndex: 'id'
                }, {
                    type: 'boolean',
                    dataIndex: 'publishableFlag'
                }, {
                    type: 'boolean',
                    dataIndex: 'hiddenFlag',
                    value:0,
                    active:true
                }
                ]
            };        
        Ext.apply(this, {
            iconCls: 'icon-grid',
            features: [this.filters],
            selType: 'rowmodel',
            columns: [
                {
                    text: 'ID',
                    hideable: false,
                    dataIndex: 'id'
                },
                {
                    xtype: 'checkcolumn', 
                    text: 'Yayınlandı mı?',
                    dataIndex: 'publishableFlag'
                },
                {
                    xtype: 'checkcolumn', 
                    text: 'Gizle',
                    dataIndex: 'hiddenFlag',
                    filter: {
                        value:0,
                        active:true
                    }
                }
            ]
        });
        this.callParent();
    },
    listeners:{
        'afterrender': function(a,b,c){
            //Ext.getCmp()
            console.log("after render", this);

        }
    },
    bbar: Ext.create('Ext.PagingToolbar', {
        store: commentStore,
        displayInfo: true
    })
});
4

1 に答える 1

2

イベントでフィルターが作成されていることを確認しafterrenderます。例:

listeners:{
    'afterrender': function(grid){
        grid.filters.createFilters();
    }
},

それでも問題が解決しない場合は、(構成を使用するだけでなく)プログラムでフィルターを設定することもできます。この回答でカバーされているように。

于 2013-02-20T00:08:22.757 に答える