2

カスタムレンダラーを備えたグリッドがあります。以下を参照してください

{                 text: 'Last Name',
                    dataIndex:'LastName',
                    renderer: function(v, m, r) {
                        return r.getDemographic().get('LastName');
                    }           
                }

ユーザーが入力したときにプロパティを除外できるようにしたいのですが、次のようにしています

{
                    fieldLabel: 'Last Name',
                    emptyText: 'Last Name',
                    listeners: {
                        change: function (field, newValue, oldValue, options) {

                            var grid = Ext.getCmp('Grid');
                            grid.store.clearFilter();


                            grid.store.filter([
                                { property: "Demographic.LastName", value: newValue }
                            ]);
                        }
                    }



                }

問題は、プロパティが本来のものではなく、バインドする必要があるプロパティの名前を見つけることができないことです。モデルは以下

Ext.define('Test', {
    extend: 'Ext.data.Model',

    fields: [
       'id'
    ],


        { type: 'hasOne', model: 'Demographic', associationKey: 'Demographic', getterName: 'getDemographic' }]

});
4

2 に答える 2

0

関数でフィルタ メソッドを使用します。

grid.store.clearFilter(true);
grid.store.filter({ filterFn: function(item) { 
     return item.getDemographic().get('LastName') == newValue; 
    }
});

http://docs.sencha.com/extjs/4.1.1/#!/api/Ext.data.Store-method-clearFilter

于 2013-06-22T05:15:09.223 に答える
0

これは hasOne 関連付けであるため、テスト モデルで直接フィルタリングするために使用できる Demographic.LastName へのマッピングを持つ追加フィールドをテスト モデルに追加することを試みることができます。

Ext.define('Test', {
    extend: 'Ext.data.Model',

    fields: [
       'id',
       {name: 'MappedLastName', mapping: 'Demographic.LastName'}
    ],

    { type: 'hasOne', model: 'Demographic', associationKey: 'Demographic', getterName: 'getDemographic' }]

});

次に、これをフィルタリングに使用できます

grid.store.filter([
      { property: "MappedLastName", value: newValue }
]);
于 2013-06-22T05:06:23.677 に答える