一尘不染

extjs中的级联组合框

hibernate

我想在extjs中级联组合框。我必须要组合框

课程组合框

{ 
    xtype : 'combobox',  
    emptyText : 'Course',  
    id:'combo-course',  
    displayField : 'name',  
    valueField : 'id',  
    store:coursestore,  
    forceSelection: true,  
    triggerAction:'all',  
    queryMode: 'remote',  
    listeners: {  
        'select': {  
            fn:function(combo, value) {  
                var comboModule = Ext.getCmp('combo-module');  
                comboModule .setDisabled(true);
        comboModule .clearValue('');
        comboModule .getStore().removeAll();
        comboModule .getStore().load({
        params: {courseId: combo.getValue()}
         });
                comboModule .setDisabled(false);  
            }  
        }  
    }  
}

课程模块:

{
    xtype : 'combobox',  
    emptyText : 'Module',  
    id:'combo-module',  
    displayField : 'name',  
    valueField : 'id',  
    disabled:true,  
    remoteFilter:true,  
    store:coursemodulestore,  
    forceSelection: true,  
    queryMode: 'remote',  
    triggerAction:'all'
}

休息服务

    @Path("/coursemodule/{courseId}")
    public List<CourseModule> getAllCourseModules(@PathParam("courseId")String courseId ) {
        try {           
            return courseObj.getModulesForCourse(courseId);
                } catch (HibernateException e) {
            logger.debug(e.getMessage());
        }
        return null;
    }

当我运行应用程序并选择第一个组合框时,它仅在第二时间在第二个组合框中显示正确的值。
但是,当我第二次选择组合框时,它不在第二个组合框中显示值。


阅读 196

收藏
2020-06-20

共1个答案

一尘不染

您似乎想清除已应用的过滤器。要删除已应用的过滤器,商店中提供了clearFilter()方法。您可以将其混合到您的代码中,如下所示:

comboModule.clearValue();  
// new line to clear any filter applied to the store
comboModule.getStore().clearFilter(true);  
comboModule.getStore().filter('courseId',combo.getValue());
2020-06-20