2012-08-28 6 views
0

양식에 콤보 상자에 문제가 있습니다. 문제는 양식 데이터를로드 할 때 (form.loadRecord) 가끔 콤보 상자가 비어 있다고하더라도 모델에 데이터가 있다는 것입니다.ExtJs 콤보 박스 로딩 및 양식

Firebug를 살펴보면 레코드가로드 된 후 콤보 상자가로드 된 것을 볼 수 있습니다. 나는 이것이 이유라고 생각한다. 콤보 박스 상점은 나중에로드되고 레코드가로드된다. 이 문제를 해결하는 일반적인 방법은

//All stores have autoload:true configuration. 
    var possessionGroundsStore = Ext.create('path.to.store'); 
    var vehicleTypesStore = Ext.create('path.to.store'); 
    var usePurposesStore = Ext.create('path.to.store'); 
    this.editView = Ext.create('path.to.view'); 
    this.editView.getPossessionGroundsField().store = possessionGroundsStore; 
    this.editView.getVehicleTypeIdComboBox().store = vehicleTypesStore; 
    this.editView.getUsePurposeField().store = usePurposesStore; 

    //later 
    this.editView.loadRecord(record); 

있습니까 :

이 내가 콤보 저장소를 설정하는 방법입니까?

내가 볼 수있는 유일한 방법은 모든 combobox 저장소 store.load 콜백을 에 사용하고 모든 저장소를로드 한 후에 loadRecord를 실행하는 것입니다.하지만 복잡해 보입니다.

어떤 도움이 필요합니까?

UPDATE : 내부적 field.setValue()를 호출이라고 form.loadRecord . 요점은 setValue이 호출되기 전에 콤보 상자가 채워 져야한다는 것입니다. 저장소가로드되지 않은 경우 displayField 대신 valueField이 표시됩니다.

+0

시도 tryAction : '모두'콤보 상자 속성 – AJJ

답변

5

콤보 박스의 구성은 생성 후 처음으로 확장 될 때 저장소로드를 트리거합니다.

queryMode: 'local' 구성을 지정하지 않으면 모든 콤보 박스에서 발생합니다. 즉, 기본 콤보 상자 구성은 거의 항상 구성 요소가 작성된 후 후에 저장소 을로드하는 것을 완료합니다. 그 이유 때문에, 당신의 콤보가 너무 늦게로드되는 데 어려움을 겪고있는 것이 이상합니다. autoLoad: true

그러나 나는 당신과 같은 문제에 부딪히지 않습니다. 보통 내 콤보 상자를 queryMode: 'local'으로 설정하고 앱 초기화 단계에서 바로 매장을 미리로드합니다. 내 콤보 스토어는 일반적으로 내 앱의 다양한 뷰에서 사용할 수있는 모든 참조 스토어이기 때문에 그렇게합니다. 콤보 구성 요소를 만들 때 저장소를 다시 만들지 않고 Ext.getStore('ComboStoreId')이있는 기존의로드 된 참조 저장소에 대한 참조 만 가져옵니다. 그렇게 앱을 설정할 수도 있습니다.

당신이 그렇게하지 않으려면

, 당신은 또한 다음 loadRecord 전화 후 yourComboStore.load()전화, 콤보 매장에서 autoLoad: true 설정을 제거 시도 할 수 있습니다.

+0

고마워, 나는 너의 길 (두 번째)을 시도했지만 운이 없다. 내 업데이트를 참조하십시오. – mik