2012-03-21 2 views
1

데이터 공급자가 드롭 다운 목록으로 변경된 후 SelectedItem이 호출되지 않는 경우가 있습니다. 그런 변경이 발생했는지 감지하는 방법이 있습니까? 감사거기에 dropdownlist에 대한 dataProviderChange 이벤트가 있습니까?

+2

'SelectedItem'이 (가) 호출되지 않았 음을 의미합니까? 제발 좀 더 자세히 설명해주세요. 코드 또는 더 나은 설명을 제공하면 도움을 드릴 수 있습니다. –

+0

selectedIndex 설정자는 항상 호출되어 -1로 설정되어야합니다. List 구성 요소는 항상이 내용으로 약간 버그가 있습니다. (하지만 다시 dataProvider setter가 호출되어야합니다.) –

답변

1

그냥에 대한 플렉스 프레임 워크의 모든 공유 재산은 '하여 PropertyChanged'이벤트를 가지 속성 집합 메서드에서 전달됩니다. 이들은 주로 바인딩 목적으로 사용되지만 대개 공식적으로 문서화되지는 않습니다.

DropDownList의 dataProvider set 메서드는 실제로 dataProviderChanged 이벤트를 전달합니다. 이 코드는 SkinnableDataContainer의 일부로 계층 구조에있는 여러 레이어입니다. 또는 'SkinnableDataContainer'의 스킨에 dataGroup이 있으면 DataGroup에서 전달됩니다.

하지만이 이벤트는 MXML의 코드 힌트를 통해 공개되지 않을 것입니다. 당신은 액션에서 수신해야합니다 :

myList.addEventListener('dataProviderChanged', onDataProviderChanged); 

이 이벤트는 항상 발송됩니다 명심 때 dataProvider의 변화에 ​​관계없이 selectedItem가 속성에 어떤 일이 일어나는지.

0

아래 코드로 설명해, IndexChangeEvent를 통해 DropDownList로에서의 selectedItem의 변화를들을 수 있습니다 :

<s:DropDownList id="dl_mydl" 
    dataProvider="{dataProvider}" 
    change="dropDownListChangeHandler(event)" 
/> 

protected function dropDownListChangeHandler(event:IndexChangeEvent) : void 
{ 
//DO SOMETHING 
} 
관련 문제