2008-09-18 3 views
4

저는 Form Panel을 만들었고, 응답 핸들러를 통해 채워지는 저장소가있는 패널에 몇 개의 Combo Box를 렌더링했습니다. 문제는 내가 패널을 다시 렌더링하려는 경우 저장소가없는 콤보 상자를 렌더링하지만 패널을 다시 구성하는 것입니다. 나는 콤보 상자에 대해 Store가 호출시 null 인 경우 - 놀랍게도 comboBox.setStore (store)가 속성 (isRendered)을 확인하고 그것이 사실이므로 사실을 찾지 못하고 원인을 알아 내기 위해 디버그를 시도했습니다. 저장하지만 여전히 null 인 기존 저장소를 유지하십시오.Gwt-Ext에서 combox store를 다시 렌더링합니다.

콤보 박스가 포함 된 접을 수있는 필드 세트를 만든 다른 시나리오에서이 문제가 발생했습니다. 같은 이유로 필드 세트의 최소화 및 최대화시 저장소가 사라집니다.

누군가 나를 도와주세요, 여기 완전히 충격을 받았습니다. 다양한 옵션을 시도했지만 아무 것도 작동하지 않았습니다.

답변

0

doLayout() 방법을 FormPanel 시도해 보셨습니까?

0

ComboBox.view.setStore()가 도움이됩니다.

보기가 전용 변수 인 경우 작성시 Combobox 구성 매개 변수 사이에서 참조하십시오. 도움이되지 않는 경우 - 당신은 같은 플러그인을 사용할 수 있습니다

view_plugin = { 

    init: function(o) { 

      o.setNewStore = function(newStore) { 
       this.view.setStore(newStore); 
      }; 
    } 
}; 

및 설정을 콤보하는

plugins: view_plugin, 

의 라인을 추가합니다.

그러면 코드에서 나중에 combobox.setNewStore (newStore)를 호출 할 수 있습니다. 귀하의 경우에는

field = new ComboBox({plugins: view_plugin});

어딘가에 전에 view_pligin의 내 코드를 정의

0

당신은 작성해야합니다. 아니면 당신도 인라인을 통합 할 수 있습니다 :

field = new ComboBox({plugins: { code of plugin });

내부의 모든 개인 특성 및 방법 변경/액세스 할 수있는 플러그인.

언제든지 나중에 field.setNewStore(store)을 사용하여 상점을 변경할 수 있습니다.

2

의견을 보내 주셔서 감사합니다. 실제로 플러그인 접근 방식을 시도했지만 구성 요소의 노출 된 요소가 아닌 저장소 핸들을 어떻게 얻을 수 있는지 완전히 이해할 수 없습니다.

어쨌든 내가 디버깅하는 동안 내가보기 버튼을 클릭하면 구성 요소를 다시 만들고 있는데도 불구하고 ID가 전달 된 (원하는) 동일하지만 어떻게 든 주어진 id는 이미 이전에 Ext.Components에서 사용할 수있는 참조입니다.

그러므로 쉬운 해결책은 다음과 같습니다. Component comp = Ext.getCmp (id); if (comp! = null) comp.destroy();

이것은 실제로 ComboBox의 isRendered() 속성이 true를 반환하도록하는 참조가 더 이상 사용할 수 없으므로 저장소를 다시 제대로 볼 수있는 참조로 사용되었습니다.

나는 이것이 유사한 문제에 직면 해있는 다른 사람들을 도울 수 있기를 바랍니다. 답장을 보내 주셔서 감사합니다.

관련 문제