我想在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; }
当我运行应用程序并选择第一个组合框时,它仅在第二时间在第二个组合框中显示正确的值。 但是,当我第二次选择组合框时,它不在第二个组合框中显示值。
您似乎想清除已应用的过滤器。要删除已应用的过滤器,商店中提供了clearFilter()方法。您可以将其混合到您的代码中,如下所示:
comboModule.clearValue(); // new line to clear any filter applied to the store comboModule.getStore().clearFilter(true); comboModule.getStore().filter('courseId',combo.getValue());