2016-12-15 9 views
1

グリッドカラムのカスタムフィルタを作成したいと思います。ExtJS 6.2:グリッドカラムのカスタムフィルタを作成する

私はこの試みた:その後、私は私のgridcolumnでフィルタを使用しようとした

Ext.define('Myapp.grid.filters.filter.Float', { 
    extend : 'Ext.grid.filters.filter.Number', 
    alias : ['grid.filter.float'], 

    type : 'float', 

    config : { 
    serializer : function (f) { 
     return { 
     type  : 'float', 
     value : f.value, 
     property : f.property, 
     operator : f.operator 
     }; 
    } 
    } 
}); 

を:

{ 
     header  : 'Foo', 
     dataIndex : 'bar', 
     filterable : true, 
     filter  : { 
     type : 'float' 
     } 
    } 

は、どのように私は自分のアプリケーションにgridfilter -pluginにフィルタを追加したり、登録し、作成しますか?私は本当にそれを取得していません。事前に

おかげ

ソリューション:

は、我々は、フィルタを作成して使用することExt.grid.filters.filter.BaseにcreateFilter機能を使用:

Ext.define('MyApp.foo.bar.FloatFilter', { 
    extend : 'Ext.grid.filters.filter.Number', 
    alias : 'grid.filter.float', 

    createFilter : function (config, key) { 
    config.type = 'float'; 
    return this.callParent(arguments); 
    } 

}); 

答えて

3

あなたは新しいクラスを定義する必要が新しいフィルタタイプを追加するには、Ext.grid.filters.filter.Baseまたはその子孫から拡張されました。

これをチェックするsimple example

また、既存のフィルタコードを確認して、カスタムメニューまたはフィルタルールを追加する方法を知ることができます。例えばExt.grid.filters.filter.String onf Ext.grid.filters.filter.SingleFilterなどです。

+0

これは機能しています!どうもありがとうございました。だから私がした唯一の間違いは、間違った名前空間を指定したことですか?実際にはext-namespaceにクラスを定義しなければなりませんか?私自身の構造体/名前空間にフィルタを作成してプラグインに手動で追加する方法はありませんか? – xdn

+0

私はできると思いますが、文字列を入力するだけでなく、クラス/クラス名を受け入れるプラグインコードをオーバーライドする必要があります。実際、アプリケーション名(Myapp)はビュー、コントローラモデル、ストアの名前空間ですが、プラグインはExtグローバルオブジェクトを使用します。 –

+1

これに対する解決策が見つかりました。 [Ext.grid.filters.filter.Base](https://docs.sencha.com/extjs/6.2.0/classic/Ext.grid.filters.filter.Base.html)でcreateFilter-Functionを使用できます。そのドキュメントには記載されていませんが、プラグインで使用されるフィルタを作成することができます。私はすぐに私の質問を更新します。 – xdn

関連する問題