1

重複の可能性:
extjs のカスケード コンボボックス

こんにちは、2 つのコンボボックスがあります。

アカデミッククラス

{
    xtype : 'combobox',
    emptyText : 'Academic Class',
    displayField : 'name',
    id:'comboacademicclass',
    valueField : 'id',
    store:classstore,
    triggerAction:'all',
    mode:'local',
    listeners : {
        'select' : {
            fn: function(combo1, value) {
                var comboSubject=Ext.getCmp('combo-subject');
                var classId=Ext.getCmp('comboacademicclass').getValue();
                comboSubject.setDisabled(true);
                comboSubject.setValue('');
                comboSubject.getStore().removeAll(true);
                comboSubject.getStore().load({url:'http://localhost:8080/WebService/rest/type/academicSubjectByClass/'+classId+'.json'});
                    // Using this loading data in second combobox by passing first combobox Id.:- 'classId'.
                    comboSubject.setDisabled(false); 
            }
        }
    }   
}

アカデミックサブジェクト:

{
    xtype : 'combobox',
    emptyText : 'Academic Subject',
    id:'combo-subject',
    displayField : 'name',
    valueField : 'id',
    disabled:true,
    store:subjectstore,
    triggerAction:'all',
    mode:'local'
    ,lastQuery:''
}

最初の選択でのみ出力が表示されますが、2回目の選択では「読み込み中」が表示され、出力は表示されません。助けてください。

4

1 に答える 1

1

selectまたはイベントの AcademicClass で AcademicSubject コンボをリッスンし、changeそれと共にリスニング コンボをアクティブにする必要があります。また、選択した値を取得するので、アクティブ化コンボのクエリを準備できます。あなたはこれを次のようにすることができます

combobox.queryData = [{ property: 'fieldName', value: value}];
combobox.reset();
combobox.doQuery(combobox.queryData);

ここcomboboxで、 はアクティブ化されたコンボ (AcademicSubject ) への参照でありvalue、AcademicClass コンボからのプロパティ値です。新しいクエリを確実に使用するには

combobox.on('beforequery', function (e) {
    e.query = e.combo.queryData;
});

注: 上記のスニペットについてはqueryParam: 'filter'、新しいパラメーターを導入する必要なく、デフォルトのサーバーサイド フィルター動作を使用できるようにするため、使用することをお勧めします。

于 2012-11-06T11:32:31.113 に答える