2011-07-06 8 views
1

사용자가 첫 번째 드롭 다운 상자에서 카테고리를 선택하면 첫 번째 드롭 다운의 선택에 따라 두 번째 드롭 다운이 업데이트되기를 원합니다.목록 내용을 Flex의 다른 목록에서 선택한 항목에 종속시키는 방법은 무엇입니까?

I은 ​​예를 들면 이름이 "데이터"첫 번째 드롭 다운의 값으로 설정되는 다수 ArrayCollections, 작성한 :

<mx:FormItem label="State:" color="black" required="true"> 
<s:DropDownList id="state" prompt="Select State" dataProvider="{country.selectedItem.data}"> 
</s:DropDownList> 
</mx:FormItem> 

없음 :

[Bindable] 
public var countries:ArrayCollection = new ArrayCollection([ 
       {label:"USA",data:"USA"}, 
       {label:"Canada",data:"Canada"}, ]); 

[Bindable] 
public var USA:ArrayCollection = new ArrayCollection([ 
       {label:"state1",data:"state1"}, 
       {label:"state2",data:"state2"}, 
       {label:"state3",data:"state3"}, ]); 

[Bindable] 
public var Canada:ArrayCollection = new ArrayCollection([ 
       {label:"statea",data:"statea"}, 
       {label:"state2b",data:"stateb"}, 
       {label:"statec",data:"statec"}, ]); 

[Bindable] 
public var Italy:ArrayCollection = new ArrayCollection([ 
       {label:"statex",data:"statex"}, 
       {label:"statey",data:"statey"}, 
       {label:"statez",data:"statez"}, ]); 

및리스트로서 구현 아이디어 달성 방법? 기본적으로 올바른 arraycollection을 사용하려면 목록에 대한 dataprovider를 올바르게 업데이트하는 방법을 알아야합니다.

+0

은 첫 번째 콤보 상자의 코드를 표시 할 수 (그리고 그것은 데이터 제공자입니다)? –

+0

첫 번째 콤보 상자 : \t \t \t \t \t \t \t \t \t \t \t \t \t \t Cninroh

+0

편집하십시오 원래 여분의 코드로 질문 ... –

답변

1

다운 목록의 첫 번째 드롭의 변경 이벤트를 듣고 같은 것을 할 :

state.dataProvider = this[country.selectedItem.data] 

'은행'키워드가 현재 구성 요소를 의미하며, 브래킷 구문을 사용하여에 문자열 값을 사용합니다 상태 dataProvider를 사용하여 구성 요소의 변수에 액세스합니다.

2

당신은 대신 데이터를 변경할 수있는 것이 더 같이, 중첩 수 :

[Bindable] 
    public var countries:ArrayCollection = new ArrayCollection([ 
      {label:"USA", data:    // country 
       new ArrayCollection([  // its states, nested 
        {label:"state1",data:"state1"}, 
        {label:"state2",data:"state2"}, 
        {label:"state3",data:"state3"} 
       ]) 
      }, 
      {label:"Canada",data:   // country 
       new ArrayCollection([  // its states, nested 
        {label:"state1",data:"state1"}, 
        {label:"state2",data:"state2"}, 
        {label:"state3",data:"state3"} 
       ])    
      } 
      ]); 
당신이 가지고있는 것처럼

는 그런 다음 선택한 항목을 결합 :

<mx:FormItem label="State:" color="black" required="true"> 
    <s:DropDownList id="state" prompt="Select State" 
     dataProvider="{country.selectedItem.data}"> 
    </s:DropDownList> 
</mx:FormItem> 
관련 문제