일반적으로 많이 사용하는 list control, datagrid control등등의 control에 어떤 데이터 값을 동적으로 채워주고자 할 때, 알아야 하는 것이 data provider이다.

보다 구체적인 data provider의 사용법에 대해 알고 싶다면,
About data provider and collections
Using Data Providers
을 참고하면 된다.

일단은 내가 직접 해 본, list control, datagrid control에 대해 간략히 정리해 보면...
동적으로 두 control들에 넣을 데이터를 담을 data class를 정의한다.

1. DataGrid control
public class Bookmark {       
   public var tags:String;
   public var description:String;
   public var time:String;       

   public function Bookmark (pTags:String, pDesc:String, pTime:String)
   {
       tags = pTags;
       description = pDesc;
       time = pTime;
   }
}
이렇게 Bookmark라는 class를 정의하고,

var b1:Bookmark = new Bookmark("tag1, tag2", "bookmark1", "2006-01-01");
var b2:Bookmark = new Bookmark("tag3, tag1", "bookmark2", "2006-01-11");
var tagArray:Array = new Array();
tagArray.push(b1);
tagArray.push(b2);

grid1.dataProvider = tagArray;

이렇게 해 주면 된다. 그런데 여기서 실제 datagrid에는 세개의 컬럼이 있는데 어떤 컬럼에 어떤 데이터를 보여주는지는 datagrid를 넣은 XML에서 설정할 수 있다.

<mx:DataGrid x="10" y="10" width="472" id="grid1">
   <mx:columns>
       <mx:DataGridColumn headerText="" dataField="col1"/>
       <mx:DataGridColumn headerText="Description" dataField="description"/>
       <mx:DataGridColumn headerText="Tags" dataField="tags"/>
       <mx:DataGridColumn headerText="Time" dataField="time"/>
   </mx:columns>
</mx:DataGrid>

2. List Control
list control의 경우 객체 배열을 data provider로 지정했을 경우, 화면 출력에 사용하는 컬럼의 설정은 default로는 label이라는 이름을 먼저 찾고, 별도로 지정하고자 할 경우에는 아래와 같이 labelField를 지정하면 된다.

<mx:List x="10" y="10" height="212" id="listTag1" width="260" labelField="tags"></mx:List>

일단 여기까지 정리...

'programming > flex2.0' 카테고리의 다른 글

Flex 2 mxml에 actionScript 정의하는 방법  (0) 2006.11.08

MXML에 ActionScript를 정의하는 방법은 두 가지가 있다.

1. MXML안에 직접 정의하는 방법
in test.mxml
<mx:Script>
  <![CDATA[
       import mx.controls.Alert;

       function sayHello(){
           Alert.show("hi")
       }
  ]]>
</mx:Script>

2. 외부 파일에 정의하고 그 파일을 지정하는 방법
in test.mxml
<mx:Script source="as3/test.as">
</mx:Script>


in as3/test.as (
import mx.controls.Alert;

function sayHello(){
  Alert.show("hi")
}

2번처럼 mx:Script를 정의할 때 source를 넣어준 경우 inline에 actionscript를 넣을 수 없다.


'programming > flex2.0' 카테고리의 다른 글

Flex 2에서 control들의 data provider 설정 방법  (2) 2006.11.16

+ Recent posts