在extjs中的组合框中执行级联时动态加载数据

时间:2012-11-06 09:35:59

标签: extjs

  

可能重复:
  Cascading Combobox in extjs

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

AcademicClass

{
    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); 
            }
        }
    }   
}

AcademicSubject

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

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

1 个答案:

答案 0 :(得分:1)

你应该听一下selectchange事件的AcademicClass上的AcademicSubject组合,并激活听力组合。您还将获得所选值,并可以为激活组合准备查询。你可以这样做

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',这样您就可以使用默认的服务器端过滤器行为,而无需引入新的参数。