4

ext 3.4 グリッド フィルター プラグインを使用して、並べ替え可能なグリッドが動作しています。アクティブな列をデフォルトにして、真の値をフィルタリングしたいと思います。非アクティブなレコードが必要なユーザーは、フィルターを削除できます。デフォルトのフィルター列と値を指定するにはどうすればよいですか?

前もって感謝します!

colModel: new Ext.grid.ColumnModel({
    defaults: {
        sortable: true
        // How do I specify a default filter value
        //
        // Only show active records unless the user changes the filter...
    },
    columns: [{
        dataIndex:'f_uid',
        id:'f_uid',
        header:'ID',
        hidden:true
    }, {
        dataIndex:'f_name',
        id:'f_name',
        header:'Name',
    }, {
        xtype:'booleancolumn',
        dataIndex:'f_active',
        id:'f_active',
        header:'Active',
        filterable:true,
        trueText:'Active',
        falseText:'Inactive'
    }]
4

4 に答える 4

4

これは古い質問だと思いますが、解決策を見つけるのに時間がかかったので、共有したいと思いました.

1) フィルタは、フィルタの value プロパティを使用して設定できます。

filter: {
          type: 'LIST',
          value: ['VALUE TO FILTER']
        }

2) 最初にデータをフィルタリングするには、ストアで filterBy() メソッドを使用します。これは onRender イベント ハンドラで定義できます。

this.getStore().load({
    scope:this,
    callback: function() {
        // filter the store 
        this.getStore().filterBy(function(record, id) {
            // true will display the record, false will not
            return record.data.DATA_TO_FILTER == 'VALUE TO FILTER ';
        });
    }
});
于 2013-06-27T23:09:31.780 に答える
3

その答えは Filter.js ソース コードにありました。列定義内のフィルター オブジェクトを使用して、既定の動作を構成できます。

}, {
        xtype:'booleancolumn',
        dataIndex:'f_active',
        id:'f_active',
        header:'Active',
        trueText:'Active',
        falseText:'Inactive',
        filterable:true,
        filter: {
            value:1,    // 0 is false, 1 is true
            active:true // turn on the filter
        }
}
于 2012-05-25T19:46:49.073 に答える
1

私は同じ問題に遭遇し、@John の答えが正しいことがわかりました。サンプルhttp://dev.sencha.com/deploy/ext-4.0.0/examples/grid-filtering/grid-で動作させることができますgrid-filter- local.jsの filter-local.html には、次のようなコードを追加するだけです。

grid.getStore().load({
    scope:this,
    callback: function() {
        // filter the store 
        grid.getStore().filterBy(function(record, id) {
            // true will display the record, false will not
            return record.data.size === 'small';
        });
    }
});

元のコードstore.load()の前に、 store.load ()を拭き取ります。次に、Web ページの最初の読み込み時に、サイズが「小」のレコードのみが表示されます。乾杯!

于 2013-07-27T04:30:40.200 に答える
0

列定義で任意のデフォルト値を設定できるユニバーサル ヘルパー クラスを作成しました。 https://gist.github.com/Eccenux/ea7332159d5c54823ad7

これは、リモート ストアと静的ストアの両方で機能するはずです。これは filterbar プラグインでも機能することに注意してください。

したがって、列項目は次のようになります。

{
    header: 'Filename',
    dataIndex: 'fileName',
    filter: {
        type: 'string',
        // filename that starts with current year
        value: Ext.Date.format(new Date(), 'Y'),
        active:true
    }
},

そして、ウィンドウコンポーネントに次のようなものを追加するだけです:

initComponent: function() {
    this.callParent();

    // apply default filters from grid to store
    var grid = this.down('grid');
    var defaultFilters = Ext.create('Ext.ux.grid.DefaultFilters');
    defaultFilters.apply(grid);
},
于 2015-08-26T12:24:56.933 に答える