DataGrid의 dataProvider에 한줄 데이터 넣기.

간혹 작업을 하다보면 DataGrid를 이용하여 한줄만 보여주는 상황이 온다.
물론 ArrayCollection 객체에 모든 컬럼에 해당하는 데이터가 있다면 그중 한 row만 꺼내와서 뿌리면 되지만 그렇지 않은 경우가 있다.

그런 경우라는 것은 여러곳에 흩어져있는 데이터를  취합하여 데이터그리드에 보여주는 경우다

쉽게 생각해서 
 var a:String = "a";
 var b:String = "b";
 var c:String = "c";
 var d:String = "d";
이런식의 데이터를 DataGrid 컴포넌트에 한줄로 표시하는 경우이다.

방법은 간단하다. 첫번째로


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()" viewSourceURL="srcview/index.html">
 
 <mx:Script>
  <![CDATA[
     
   private var obj:Object;
   private function init():void{
    obj = new Object();
    obj.a = "a";
    obj.b = "b";
    dg.dataProvider = obj;
   
   }
  ]]>
 </mx:Script>
 <mx:DataGrid id="dg">
  <mx:columns>
   <mx:DataGridColumn headerText="column a" dataField="a" />
   <mx:DataGridColumn headerText="column b" dataField="b" />
  </mx:columns>
 </mx:DataGrid>
 
</mx:Application>

위와 Object를 생성하여 넣는 방법이다.

하지만 이 방법은 위험할 수 있다.
아래와 같이 사용하자.



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()" >
 <mx:Script>
  <![CDATA[
   import com.Vo;   
  
   private function init():void{
    var vo:Vo = new Vo();
    vo.a = "a";
    vo.b = "b";
    dg.dataProvider = vo;
   }
  ]]>
 </mx:Script>
 <mx:DataGrid id="dg">
  <mx:columns>
   <mx:DataGridColumn headerText="column a" dataField="a" />
   <mx:DataGridColumn headerText="column b" dataField="b" />
  </mx:columns>
 </mx:DataGrid>
</mx:Application>


Vo.as
package com
{
 public class Vo 
 {
  public function Vo()
  {   
  }  
  public var a:String; 
  public var b:String;  
 }
}


p.s view Source 하려고 했는데 파일첨부에서 폴더는 못올리겠네요 ..올리는 방법좀 -_-;;;;