복붙노트

[SPRING] extjs의 계단식 콤보 박스

SPRING

extjs의 계단식 콤보 박스

나는 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;
    }

응용 프로그램을 실행하고 첫 번째 콤보 상자를 선택하면 두 번째 콤보 상자에서 첫 번째로만 올바른 값을 표시합니다. 그러나 두 번째 콤보 박스에서 값을 표시하지 않는 두 번째 콤보 박스를 선택할 때.

해결법

  1. ==============================

    1.이미 적용한 필터를 지우고 싶은 것 같습니다. 적용된 필터를 제거하기 위해 상점에서 사용할 수있는 clearFilter () 메소드가 있습니다. 이 코드를 다음과 비슷한 코드에 혼합 할 수 있습니다.

    이미 적용한 필터를 지우고 싶은 것 같습니다. 적용된 필터를 제거하기 위해 상점에서 사용할 수있는 clearFilter () 메소드가 있습니다. 이 코드를 다음과 비슷한 코드에 혼합 할 수 있습니다.

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

    2.대부분의 경우 문제는 store.load ()가 비동기입니다. 로드 콜백에서 논리의 나머지 부분 (필터링 등)을 전달해보십시오.

    대부분의 경우 문제는 store.load ()가 비동기입니다. 로드 콜백에서 논리의 나머지 부분 (필터링 등)을 전달해보십시오.

  3. ==============================

    3.그것은 당신이 그것을로드 두 번째 LoadMask를 보여주는가요?

    그것은 당신이 그것을로드 두 번째 LoadMask를 보여주는가요?

    이 동작을 재정의하려면 다음을 사용하십시오.

    Ext.override(Ext.LoadMask, {
        onHide: function() {
        this.callParent();
      }
    });
    
  4. from https://stackoverflow.com/questions/13193361/cascading-combobox-in-extjs by cc-by-sa and MIT license