2011-03-28 2 views
2

나는 2 개 패널과는, ViewStack 있습니다Flex 3 ViewStack에서 다른 패널에 액세스하는 방법?

나는 사용자가 첫 번째 패널에 그리드 항목을 클릭 한 다음 두 번째 패널의 패널에서 데이터를로드해야 할
<mx:ViewStack id="viewstack1" height="243"> 
<mx:Panel id="gridPanel"> 
    <mx:DataGrid id="grid" right="10" left="10" top="10" bottom="10" width="300" height="150" itemClick="showDetails(event)"> 
     <mx:columns> 
       <mx:DataGridColumn headerText="ID" dataField="Id"/> 
       <mx:DataGridColumn headerText="Summary" dataField="Summary"/> 
      </mx:columns> 
     </mx:DataGrid> 
    </mx:Panel> 
    <mx:Panel id="detailsPanel"> 
     <mx:HBox width="100%" height="100%"> 
      <mx:VBox height="100%" width="228" id="detailsVbox"> 
       <mx:Label text="Label" id="itemTitle"/> 
       <mx:Text text="Text" id="itemSummary"/> 
       <mx:DataGrid height="97"> 
        <mx:columns> 
         <mx:DataGridColumn headerText="Property" dataField="col1"/> 
         <mx:DataGridColumn headerText="Value" dataField="col2"/> 
        </mx:columns> 
       </mx:DataGrid> 
      </mx:VBox> 
      <mx:Image source="images/BackButton.png" width="50" height="50" click="viewstack1.selectedChild = gridPanel"/> 

     </mx:HBox> 
</mx:Panel>  
</mx:ViewStack> 

. itemClicked 핸들러에서 클릭 한 항목의 인덱스 값을 가져올 수는 있지만 Grid에서 행 정보를 기반으로 값을 설정하려면 detailsPanel에 어떻게 액세스합니까? 이 당신이 원하는 경우

답변

2

는 잘 모르겠어요,하지만 당신은 같은 것을 할 수 있습니다 :이 위해서는

private function showDetails(event:ListEvent):void { 
    itemTitle.text = event.itemRenderer.data.Id; 
    itemSummary.text = event.itemRenderer.data.Summary; 

    //assuming that the datagrid ID from the details panel is: detailsDatagrid 
    detailsDatagrid.dataProvider = event.itemRenderer.data.Properties; 

    viewstack1.selectedChild = detailsPanel; 
} 

는 또한는, ViewStack에 생성 정책을 추가해야합니다 일.

<mx:ViewStack id="viewstack1" height="243" creationPolicy="all"> 

(필요할 때 그들은 단지 생성됩니다 기본적으로)에는, ViewStack을 만들 때 모든 패널이 작성하려고하는이 방법. 이렇게하면 패널이 표시되기 전에 detailsPanel, itemTitle, itemSummary 등의 참조가 나타납니다.

+0

+1 –

0

나를 위해 최선의 방법은 데이터 바인딩을 사용하는 것입니다. 추가 필드 소개하기

[Bindable] 
private var detailsDataProvider:ArrayCollection; 

그리고 showDetails 메소드에 자세한 내용을 입력하십시오.

detailsDataProvider = null; 

를 그리고 서버 데이터로 채울 : 정보 데이터 (예를 들어, 서버에서) 비동기 적으로 획득해야하는 경우에는 데이터가 수신 될 때까지 현재의 정보 값을 재설정 할 수 있습니다.

최종 변경 사항 데이터 그리드에 있습니다

<mx:DataGrid height="97" dataProvider="{detailsDataProvider}"> 

는 도움이되기를 바랍니다.

0

이 코드는 'stackview'간단한 예제를 설명합니다. 이것을 사용하면 같은 패널을 호출 할 수 있습니다.

creationPolicy가에 대한

관련 문제