2011-03-10 6 views
0

하나의 열에 두 개의 서로 다른 요소의 데이터를 표시하려면 어떻게해야합니까? 또는 두 개의 열을 결합하는 방법이 있다면?하나의 열에 서로 다른 두 요소의 데이터를 표시하는 방법은 무엇입니까?

다음 예와 같이 단지 firstName이 표시됩니다. 같은 열에도 lastName을 어떻게 표시 할 수 있습니까?

Folloing '는 변경할 수 없습니다'는 XML 파일입니다

<userEmail> 
<user firstName="john" lastName="seena" /> 
<user firstName="pinku" lastName="phil"/> 
</userEmail> 

코드 :

monitoringArray = event.result.userEmail.user; 
. 
. 
. 
<mx:DataGrid id="monDataGrid" x="10" y="10" dataProvider="{monitoringArray}"> 
<mx:columns> 
    <mx:DataGridColumn width="150" headerText="User Name" dataField="firstName" 
</mx:columns> 
</mx:DataGrid> 

답변

2

확실히 DatagridColumn의 labelFunction 속성을 사용하여 수행 할 수 있습니다.

거친 예 :

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 


    <fx:Script> 
     <![CDATA[ 

      private var xml:XML = <userEmail> 
            <user firstName="john" lastName="seena" /> 
            <user firstName="pinku" lastName="phil"/> 
            </userEmail> 

      private function getCombinedUserNameLabel(item:Object, col:DataGridColumn):String 
      { 
       return [email protected] + " " + [email protected]; 
      } 
     ]]> 
    </fx:Script> 

    <mx:DataGrid id="monDataGrid" x="10" y="10" dataProvider="{xml.user}"> 
     <mx:columns> 
      <mx:DataGridColumn width="150" headerText="User Name" labelFunction="{getCombinedUserNameLabel}"/> 
     </mx:columns> 
    </mx:DataGrid> 

편집 : DataGrids를에

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" 
       creationComplete="application1_creationCompleteHandler(event)" 
       > 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 


    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      private var xml:XML = <userEmail> 
            <user firstName="john" lastName="seena" /> 
            <user firstName="pinku" lastName="phil"/> 
            </userEmail>; 

      private var monitoringArray:Array = [{firstName:"john", lastName:"seena"}, {firstName:"pinku", lastName:"phil"}]; 

      private function getCombinedUserNameLabel(item:Object, col:DataGridColumn):String 
      { 
       return [email protected] + " " + [email protected]; 
      } 

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

      protected function application1_creationCompleteHandler(event:FlexEvent):void 
      { 
       // TODO Auto-generated method stub 
      } 

     ]]> 
    </fx:Script> 

    <s:VGroup> 
     <mx:DataGrid id="monDataGrid" x="10" y="10" dataProvider="{xml.user}"> 
      <mx:columns> 
       <mx:DataGridColumn width="150" headerText="User Name" labelFunction="{getCombinedUserNameLabel}"/> 
      </mx:columns> 
     </mx:DataGrid> 

     <mx:DataGrid id="monDataGrid2" x="10" y="10" dataProvider="{monitoringArray}"> 
      <mx:columns> 
       <mx:DataGridColumn width="150" headerText="User Name" labelFunction="{getCombinedUserNameLabel2}"/> 
      </mx:columns> 
     </mx:DataGrid>  

    </s:VGroup> 

</s:Application> 
+0

좋습니다. xml : XML을 사용하지만 내가 사용하고있는 배열 인 monitoringArray로 작업하지 않으면 잘 작동합니다. – baltoro

+0

그것이 작동하고 질문 한 것을 수행하는 경우 답변을 수락하는 것을 잊지 말고 다른 사람들이 시간을 절약 할 수 있습니다. 어레이 스틱을 가지고 있습니까? –

+0

질문은 Array와 함께 작동하도록하는 것이 었습니다. 그래서 Array로 작동하게되면 받아 들일 것입니다. 걱정마. :) tyo 막대기는 무엇을 참조합니까? 그것을 봤지만 아무것도 찾을 수 없습니다. – baltoro

0

나는 그것이 XML 파일을 변경하지 않고 할 수없는 것 같아요. datafield 속성에는 하나의 문자열 만 사용할 수 있습니다. 다음은 adobe reference website의 정의입니다.

dataField : String 
    The name of the field or property in the data provider item 
    associated with the column. 
+0

도움을 주신 Anji에게 감사드립니다. 위의 David의 대답을 확인하십시오. 있을 수있다. :) – baltoro

0

복잡한 열이 아이템 렌더러 달성 할 수있다 : 배열도 문제가되지 않습니다. 어도비에서 제공하는 둘러보기 de flex 앱에 대한 예를 볼 수 있습니다. Tour De Flex

관련 문제