2011-10-15 7 views
0

두 데이터 그레이드가 있습니다. - 디비전 - 구성원 둘 다 단일 열을가집니다. Divsions DataGrid에서 하나의 항목을 선택하면 해당 Division의 멤버가 Members DataGrid에 표시됩니다. 그러나 다음 코드에는 몇 가지 문제가 있으며 각 Divsion을 클릭 할 때 특정 부서의 구성원이 나타나지 않습니다.다른 데이터 그레이드의 변경 이벤트에서 데이터 그레이드의 데이터 제공자 변경

다음은 관련 코드의 일부입니다. 누군가가 오류를 발견 할 수 있기를 바랍니다.

private var divs_array:Array = ['Division A','Division B']; 
[Bindable] private var divisions:ArrayCollection = new ArrayCollection(divs_array); 

private var memA_array:Array = ['Jo Koy','Stephan Lynch', 'Charlie Murphy', 'Michael']; 
[Bindable] private var mems_of_A :ArrayCollection = new ArrayCollection(memA_array); 

private var memB:Array = ['Ali','Ikram']; 
[Bindable] private var mems_of_B:ArrayCollection = new ArrayCollection(memB_array);   

private function divDataGridChange():void{ 
    if (divDataGrid.selectedIndex==0) 
    memDataGrid.dataProvider=mems_of_A; 
    else (divDataGrid.selectedIndex==1) 
    memDataGrid.dataProvider=mems_of_B; 
} 

private function getCombinedUserNameLabel(item:Object, col:DataGridColumn):String 
{ 
    return item.firstName + " " + item.lastName; 
} 

<mx:DataGrid id="divDataGrid" dataProvider="{divisions}" width="150" height="265" change="{divDataGridChange()}" selectedIndex="0"> 
    <mx:columns> 
    <mx:DataGridColumn width="150" headerText="Select a Division" /> 
    </mx:columns> 
</mx:DataGrid> 
<mx:DataGrid id="memDataGrid" dataProvider="{mems_of_A}" change="{monDataGridChange()}" selectedIndex="0"> 
    <mx:columns> 
    <mx:DataGridColumn width="150" headerText="Select a User" labelFunction="{getCombinedUserNameLabel}" /> 
    </mx:columns> 
</mx:DataGrid> 

답변

2

조건문을 잘 살펴보십시오.

private function divDataGridChange():void{ 
    if (divDataGrid.selectedIndex==0) 
    memDataGrid.dataProvider=mems_of_A; 
    else (divDataGrid.selectedIndex==1) 
    memDataGrid.dataProvider=mems_of_B; 
} 

private function divDataGridChange():void{ 
    if (divDataGrid.selectedIndex==0) 
    memDataGrid.dataProvider=mems_of_A; 
    else if (divDataGrid.selectedIndex==1) 
    memDataGrid.dataProvider=mems_of_B; 
} 

http://livedocs.adobe.com/flex/3/html/help.html?content=03_Language_and_Syntax_15.html

+0

아 것을 "변화"에서 이벤트를 교체합니다. 고맙습니다. 그러나 문제는 여전히 존재합니다. 즉, 회원의 DataGrid 항목은 부서의 DataGrid 항목을 클릭해도 변경되지 않습니다. : - / – baltoro

0

이 방법 divDataGridChange()이 줄을 추가해야합니다 : memDataGrid.invalidateDisplayList();

업데이트 방법 :

private function divDataGridChange():void{ 
      if (divDataGrid.selectedIndex==0) 
       memDataGrid.dataProvider=mems_of_A; 
      else if (divDataGrid.selectedIndex==1) 
       memDataGrid.dataProvider=mems_of_B; 

      memDataGrid.invalidateDisplayList(); 
     } 

또한 "대해서 itemClick"국지적 인 사단 데이터 그리드 태그

<mx:DataGrid id="divDataGrid" dataProvider="{divisions}" width="150" height="265" itemClick="{divDataGridChange()}" selectedIndex="0" >