1

可能重复:
extjs 中的级联组合框

嗨,我有两个组合框,即..

学术班

{
    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:''
}

它仅在第一次选择时显示输出,但在第二次选择时仅显示“正在加载”而不显示输出。请帮忙。

4

1 回答 1

1

好吧,您应该使用 AcademicClass 上的 AcademicSubject 组合来收听selectchange事件,并连同它一起激活收听组合。您还将获得选定的值,因此可以为激活组合准备查询。你可以这样做

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

其中combobox是对已激活组合 (AcademicSubject ) 的引用和valueAcademicClass 组合中的属性值。为确保使用您的新查询使用

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

请注意:对于上面的片段,我建议使用queryParam: 'filter'这将使您能够使用默认的服务器端过滤器行为,而无需引入新的参数。

于 2012-11-06T11:32:31.113 回答