패키지fl.data
클래스public class DataProvider
상속DataProvider Inheritance EventDispatcher Inheritance Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

DataProvider 클래스는 List, DataGrid, TileList 및 ComboBox 같은 목록 기반 구성 요소에서 데이터를 쿼리하고 수정할 수 있는 메서드와 속성을 제공합니다.

데이터 공급자는 데이터 소스로 사용되는 항목의 선형 컬렉션(예: 배열)입니다. 데이터 공급자의 각 항목은 데이터의 필드 하나 이상에 포함된 객체 또는 XML 객체입니다. DataProvider.getItemAt() 메서드를 사용하여 인덱스별로 데이터 공급자에 포함된 항목에 액세스할 수 있습니다.

예제 보기



Public 속성
 속성다음에 의해 정의됨
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
  length : uint
[읽기 전용] 데이터 공급자에 포함된 항목의 수입니다.
DataProvider
 Inheritedprototype : Object
[정적] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
Public 메서드
 메서드다음에 의해 정의됨
  
DataProvider(value:Object = null)
데이터 객체의 목록, XML 인스턴스 또는 배열을 데이터 소스로 사용하여 새 DataProvider 객체를 만듭니다.
DataProvider
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다.
EventDispatcher
  
데이터 공급자의 끝에 항목을 추가합니다.
DataProvider
  
addItemAt(item:Object, index:uint):void
지정된 인덱스의 데이터 공급자에 새 항목을 추가합니다.
DataProvider
  
DataProvider 끝에 여러 항목을 추가하고 DataChangeType.ADD 이벤트를 전달합니다.
DataProvider
  
addItemsAt(items:Object, index:uint):void
지정된 인덱스 위치의 데이터 공급자에 여러 항목을 추가하고 DataChangeType.ADD 이벤트를 전달합니다.
DataProvider
  
현재 DataProvider 객체의 복사본을 만듭니다.
DataProvider
  
지정된 항목을 현재 데이터 공급자의 끝에 연결합니다.
DataProvider
 Inherited
이벤트를 이벤트 흐름으로 전달합니다.
EventDispatcher
  
지정된 인덱스에 해당하는 항목을 반환합니다.
DataProvider
  
지정된 항목의 인덱스를 반환합니다.
DataProvider
 Inherited
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
 Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
  
DataProvider에 포함된 모든 데이터 항목을 무효화하고 DataChangeEvent.INVALIDATE_ALL 이벤트를 전달합니다.
DataProvider
  
지정된 항목을 무효화합니다.
DataProvider
  
지정된 인덱스의 항목을 무효화합니다.
DataProvider
 Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
  
merge(newData:Object):void
지정된 데이터를 데이터 공급자에 포함된 데이터에 추가하고 중복된 항목을 제거합니다.
DataProvider
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
  
데이터 공급자에서 모든 항목을 제거하고 DataChangeType.REMOVE_ALL 이벤트를 전달합니다.
DataProvider
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher 객체에서 리스너를 제거합니다.
EventDispatcher
  
데이터 공급자에서 지정된 항목을 제거하고 DataChangeType.REMOVE 이벤트를 전달합니다.
DataProvider
  
지정된 인덱스의 항목을 제거하고 DataChangeType.REMOVE 이벤트를 전달합니다.
DataProvider
  
replaceItem(newItem:Object, oldItem:Object):Object
기존 항목을 새 항목으로 교체하고 DataChangeType.REPLACE 이벤트를 전달합니다.
DataProvider
  
지정된 인덱스의 항목을 교체하고 DataChangeType.REPLACE 이벤트를 전달합니다.
DataProvider
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
  
sort(... sortArgs):*
데이터 공급자에 포함된 항목을 정렬하고 DataChangeType.SORT 이벤트를 전달합니다.
DataProvider
  
sortOn(fieldName:Object, options:Object = null):*
지정한 필드에 따라 데이터 공급자에 포함된 데이터를 정렬하고 DataChangeType.SORT 이벤트를 전달합니다.
DataProvider
  
데이터 공급자에 포함된 데이터의 Array 객체 표현을 만듭니다.
DataProvider
  
데이터 공급자에 포함된 데이터의 문자열 표현을 만듭니다.
DataProvider
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
 Inherited
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
이벤트
 이벤트 요약 다음에 의해 정의됨
 Inherited[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다.EventDispatcher
  데이터가 변경된 후에 전달됩니다.DataProvider
 Inherited[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다.EventDispatcher
  데이터가 변경되기 전에 전달됩니다.DataProvider
속성 정보
length속성
length:uint  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자에 포함된 항목의 수입니다.



구현
    public function get length():uint

예제
다음 예제에서는 List 구성 요소 인스턴스를 만들고 데이터 공급자의 항목 수와 일치하도록 목록의 크기를 조정합니다.
import fl.controls.List;
import fl.data.DataProvider;

var dp:DataProvider = new DataProvider();
dp.addItem({label:"Item 1"});
dp.addItem({label:"Item 2"});
dp.addItem({label:"Item 3"});
dp.addItem({label:"Item 4"});

var myList:List = new List();
myList.dataProvider = dp;
myList.rowHeight = 35;
myList.rowCount = dp.length;
myList.move(10, 10);
addChild(myList);
생성자 정보
DataProvider()생성자
public function DataProvider(value:Object = null)

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 객체의 목록, XML 인스턴스 또는 배열을 데이터 소스로 사용하여 새 DataProvider 객체를 만듭니다.

매개 변수
value:Object (default = null) — DataProvider를 만드는 데 사용되는 데이터입니다.

예제

다음 예제에서는 addItem() 메서드를 사용하여 새 데이터 공급자를 만듭니다.
import fl.controls.ComboBox;
import fl.data.DataProvider;
 
var dp:DataProvider = new DataProvider();
dp.addItem({label:"item 1a"});
dp.addItem({label:"item 2a"});

var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);

다음 예제에서는 Array 객체를 사용하여 데이터 공급자를 채웁니다.
import fl.controls.ComboBox;
import fl.data.DataProvider;

var arr:Array = new Array();
arr.push({label:"item 1b"});
arr.push({label:"item 2b"});

var dp:DataProvider = new DataProvider(arr);

var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);

다음 예제에서는 특성이 있는 XML 객체를 사용하여 데이터 공급자를 채웁니다.
import fl.controls.ComboBox;
import fl.data.DataProvider;

var xml:XML = <items>
        <item label="item 1c" />
        <item label="item 2c" />
    </items>;

var dp:DataProvider = new DataProvider(xml);

var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);

다음 예제에서는 자식 노드가 있는 XML 객체를 사용하여 데이터 공급자를 채웁니다.
import fl.controls.ComboBox;
import fl.data.DataProvider;

var xml:XML = <items>
        <item>
            <label>item 1d</label>
        </item>
        <item>
            <label>item 2d</label>
        </item>
    </items>;

var dp:DataProvider = new DataProvider(xml);

var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
메서드 정보
addItem()메서드
public function addItem(item:Object):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자의 끝에 항목을 추가합니다.

매개 변수

item:Object — 현재 데이터 공급자의 끝에 추가할 항목입니다.

참고 사항


예제

다음 예제에서는 addItem() 메서드를 사용하여 새 데이터 공급자를 만듭니다.
import fl.controls.ComboBox;
import fl.data.DataProvider;
 
var dp:DataProvider = new DataProvider();
dp.addItem({label:"item 1a"});
dp.addItem({label:"item 2a"});

var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
addItemAt()메서드 
public function addItemAt(item:Object, index:uint):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 인덱스의 데이터 공급자에 새 항목을 추가합니다. 지정한 인덱스가 데이터 공급자의 길이를 초과하면 인덱스가 무시됩니다.

매개 변수

item:Object — 추가할 객체입니다. 이 객체에는 항목의 데이터가 포함되어 있습니다.
 
index:uint — 항목이 추가될 인덱스입니다.


오류
RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다.

참고 사항

addItems()메서드 
public function addItems(items:Object):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

DataProvider 끝에 여러 항목을 추가하고 DataChangeType.ADD 이벤트를 전달합니다. 항목은 지정된 순서대로 추가됩니다.

매개 변수

items:Object — 데이터 공급자에 추가할 항목입니다.

참고 사항


예제

다음 예제에서는 addItems() 메서드를 사용하여 데이터 공급자에 여러 항목을 추가합니다.
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;

var arr:Array = [{col1:"1.A", col2:"1.B"}, {col1:"2.A", col2:"2.B"}]

var dp:DataProvider = new DataProvider();
dp.addItems(arr);
trace(dp.length); // 2

var c1:DataGridColumn = new DataGridColumn("col1");
var c2:DataGridColumn = new DataGridColumn("col2");

var myDataGrid:DataGrid = new DataGrid();
myDataGrid.addColumn(c1);
myDataGrid.addColumn(c2);
myDataGrid.dataProvider = dp;
myDataGrid.setSize(200, 160);
myDataGrid.move(10, 10);
addChild(myDataGrid);
addItemsAt()메서드 
public function addItemsAt(items:Object, index:uint):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 인덱스의 데이터 공급자에 여러 항목을 추가하고 DataChangeType.ADD 이벤트를 전달합니다.

매개 변수

items:Object — 데이터 공급자에 추가할 항목입니다.
 
index:uint — 항목이 삽입될 인덱스입니다.


오류
RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다.

참고 사항

clone()메서드 
public function clone():DataProvider

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

현재 DataProvider 객체의 복사본을 만듭니다.

반환값
DataProvider — 이 DataProvider 객체의 새 인스턴스입니다.
concat()메서드 
public function concat(items:Object):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 항목을 현재 데이터 공급자의 끝에 연결합니다. 이 메서드는 DataChangeType.ADD 이벤트를 전달합니다.

매개 변수

items:Object — 데이터 공급자에 추가할 항목입니다.

참고 사항

getItemAt()메서드 
public function getItemAt(index:uint):Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 인덱스에 해당하는 항목을 반환합니다.

매개 변수

index:uint — 반환할 항목의 위치입니다.

반환값
Object — 지정된 인덱스에 있는 항목입니다.

오류
RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다.

참고 사항

getItemIndex()메서드 
public function getItemIndex(item:Object):int

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 항목의 인덱스를 반환합니다.

매개 변수

item:Object — 찾을 객체입니다.

반환값
int — 지정된 항목의 인덱스입니다. 지정된 항목이 없는 경우 -1입니다.

참고 사항

invalidate()메서드 
public function invalidate():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

DataProvider에 포함된 모든 데이터 항목을 무효화하고 DataChangeEvent.INVALIDATE_ALL 이벤트를 전달합니다. 항목이 변경된 후에 무효화됩니다. DataProvider는 무효화된 항목을 자동으로 다시 그립니다.

참고 사항

invalidateItem()메서드 
public function invalidateItem(item:Object):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 항목을 무효화합니다. 항목이 변경된 후에 무효화됩니다. DataProvider는 무효화된 항목을 자동으로 다시 그립니다.

매개 변수

item:Object — 무효화할 항목입니다.

참고 사항

invalidateItemAt()메서드 
public function invalidateItemAt(index:int):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 인덱스의 항목을 무효화합니다. 항목이 변경된 후에 무효화됩니다. DataProvider는 무효화된 항목을 자동으로 다시 그립니다.

매개 변수

index:int — 무효화할 항목의 인덱스입니다.


오류
RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다.

참고 사항

merge()메서드 
public function merge(newData:Object):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 데이터를 데이터 공급자에 포함된 데이터에 추가하고 중복된 항목을 제거합니다. 이 메서드는 DataChangeType.ADD 이벤트를 전달합니다.

매개 변수

newData:Object — 데이터 공급자에 병합할 데이터입니다.

참고 사항

removeAll()메서드 
public function removeAll():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자에서 모든 항목을 제거하고 DataChangeType.REMOVE_ALL 이벤트를 전달합니다.

참고 사항

removeItem()메서드 
public function removeItem(item:Object):Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자에서 지정된 항목을 제거하고 DataChangeType.REMOVE 이벤트를 전달합니다.

매개 변수

item:Object — 제거할 항목입니다.

반환값
Object — 제거된 항목입니다.

참고 사항

removeItemAt()메서드 
public function removeItemAt(index:uint):Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 인덱스의 항목을 제거하고 DataChangeType.REMOVE 이벤트를 전달합니다.

매개 변수

index:uint — 제거할 항목의 인덱스입니다.

반환값
Object — 제거된 항목입니다.

오류
RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다.

참고 사항

replaceItem()메서드 
public function replaceItem(newItem:Object, oldItem:Object):Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

기존 항목을 새 항목으로 교체하고 DataChangeType.REPLACE 이벤트를 전달합니다.

매개 변수

newItem:Object — 교체할 객체입니다.
 
oldItem:Object — 교체 항목입니다.

반환값
Object — 바꾼 항목입니다.

오류
RangeError — 데이터 공급자에서 항목을 찾을 수 없습니다.

참고 사항

replaceItemAt()메서드 
public function replaceItemAt(newItem:Object, index:uint):Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정된 인덱스의 항목을 교체하고 DataChangeType.REPLACE 이벤트를 전달합니다.

매개 변수

newItem:Object — 교체 항목입니다.
 
index:uint — 교체할 항목의 인덱스입니다.

반환값
Object — 바꾼 항목입니다.

오류
RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다.

참고 사항

sort()메서드 
public function sort(... sortArgs):*

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자에 포함된 항목을 정렬하고 DataChangeType.SORT 이벤트를 전달합니다.

매개 변수

... sortArgs — 정렬에 사용할 인수입니다.

반환값
* — 반환값은 메서드의 인수 수신 여부에 따라 달라집니다. 자세한 내용은 Array.sort() 메서드를 참조하십시오. sortOption 속성이 Array.UNIQUESORT로 설정된 경우 이 메서드는 0을 반환합니다 .

참고 사항

sortOn()메서드 
public function sortOn(fieldName:Object, options:Object = null):*

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

지정한 필드에 따라 데이터 공급자에 포함된 데이터를 정렬하고 DataChangeType.SORT 이벤트를 전달합니다. 지정한 필드는 문자열이거나, 여러 필드를 우선 순위에 따라 정렬하도록 지정하는 문자열 값의 배열일 수 있습니다.

매개 변수

fieldName:Object — 정렬 기준이 되는 항목 필드입니다. 이 값은 문자열이거나 문자열 값의 배열일 수 있습니다.
 
options:Object (default = null) — 정렬 옵션입니다.

반환값
* — 반환값은 메서드의 인수 수신 여부에 따라 달라집니다. 자세한 내용은 Array.sortOn() 메서드를 참조하십시오. sortOption 속성이 Array.UNIQUESORT로 설정된 경우 이 메서드는 0을 반환합니다.

참고 사항

toArray()메서드 
public function toArray():Array

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자에 포함된 데이터의 Array 객체 표현을 만듭니다.

반환값
Array — 데이터 공급자에 포함된 데이터의 Array 객체 표현입니다.
toString()메서드 
override public function toString():String

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터 공급자에 포함된 데이터의 문자열 표현을 만듭니다.

반환값
String — 데이터 공급자에 포함된 데이터의 문자열 표현입니다.
이벤트 정보
dataChange 이벤트
이벤트 객체 유형: fl.events.DataChangeEvent
속성 DataChangeEvent.type = fl.events.DataChangeEvent.DATA_CHANGE

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터가 변경된 후에 전달됩니다.

dataChange 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
changeType 적용된 변경 사항의 유형을 확인합니다.
currentTarget 이벤트 리스너를 통해 이벤트 객체를 처리하고 있는 객체입니다.
endIndex 마지막으로 변경된 항목의 인덱스를 확인합니다.
items 변경된 항목을 나열하는 배열입니다.
startIndex 첫 번째로 변경된 항목의 인덱스를 확인합니다.
target 이벤트를 전달한 객체입니다. 이벤트를 수신하는 객체와는 다를 수도 있습니다. 이벤트를 수신하는 객체에 액세스하려면 currentTarget 속성을 사용합니다.

참고 사항

preDataChange 이벤트  
이벤트 객체 유형: fl.events.DataChangeEvent
속성 DataChangeEvent.type = fl.events.DataChangeEvent.PRE_DATA_CHANGE

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.28.0

데이터가 변경되기 전에 전달됩니다.

preDataChange 이벤트 객체의 type 속성 값을 정의합니다. 이 이벤트 객체는 구성 요소 데이터를 변경하기 전에 전달됩니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
changeType 적용할 변경 사항의 유형을 확인합니다.
currentTarget 이벤트 리스너를 통해 이벤트 객체를 처리하고 있는 객체입니다.
endIndex 변경할 마지막 항목의 인덱스를 확인합니다.
items 변경할 항목을 나열하는 배열입니다.
startIndex 변경할 첫 번째 항목의 인덱스를 확인합니다.
target 이벤트를 전달한 객체입니다. 이벤트를 수신하는 객체와는 다를 수도 있습니다. 이벤트를 수신하는 객체에 액세스하려면 currentTarget 속성을 사용합니다.

참고 사항

예제 예제 사용 방법
DataProviderExample.as

다음 예제에서는 데이터 공급자를 사용하여 여러 데이터 격자의 내용을 유지할 수 있는 방법을 보여 줍니다.

예제를 실행하려면 다음 단계를 수행합니다.

  1. 라이브러리에 Label, Button, ComboBox, TextInput 및 DataGrid 구성 요소를 추가합니다.
  2. 이 코드를 FLA 파일과 같은 디렉토리에 DataProviderExample.as로 저장합니다.
  3. FLA 파일의 Document 클래스를 DataProviderExample로 설정합니다.
package
{
    import fl.controls.Button;
    import fl.controls.ComboBox;
    import fl.controls.DataGrid;
    import fl.controls.Label;
    import fl.controls.TextInput;
    import fl.data.DataProvider;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.text.TextFieldAutoSize;
    
    public class DataProviderExample extends Sprite
    {        
        private var southern:DataGrid;
        private var northern:DataGrid;
        private var world:DataGrid;
        private var southernRoster:DataProvider;
        private var northernRoster:DataProvider;
        private var leagueCB:ComboBox;
        private var nameTI:TextInput;
        private var goalsTI:TextInput;
        private var submitBtn:Button;

        public function DataProviderExample() {
            southernRoster = new DataProvider();
            northernRoster = new DataProvider();
            
            createDataGrids();
            createUI();
        }

        private function createUI():void {
            var description:Label = new Label();
            description.text = "Enter player's name, goals scored, and hemisphere of origin:";
            description.autoSize = TextFieldAutoSize.LEFT;
            nameTI = new TextInput();
            goalsTI = new TextInput();
            
            var submitBtn:Button = new Button();
            submitBtn.label = "Submit Player";
            submitBtn.addEventListener(MouseEvent.CLICK, submitPlayer);
            
            leagueCB = new ComboBox();
            leagueCB.addItem( { label:"Northern", data: 0 } );
            leagueCB.addItem( { label:"Southern", data: 1 } );
            
            description.move(10,10);
            nameTI.move(10,40);
            nameTI.setSize(150,24);
            goalsTI.move(170,40);
            goalsTI.setSize(40,24);
            leagueCB.move(220,40);
            leagueCB.setSize(120,24);
            submitBtn.move(350,40);
            goalsTI.restrict = "0123456789";
            
            addChild(description);
            addChild(leagueCB);
            addChild(submitBtn);
            addChild(nameTI);
            addChild(goalsTI);
        }
        private function submitPlayer(e:MouseEvent):void {
            if(nameTI.text != "" && goalsTI.text != "") {
                var targetRoster:DataProvider;

                if(leagueCB.selectedItem.label == "Southern") {
                    targetRoster = southernRoster;
                }
                else {
                    targetRoster = northernRoster;
                }
    
                targetRoster.addItem( { Name: nameTI.text, Goals: goalsTI.text } );
                
                var worldRoster:DataProvider = southernRoster.clone();
                worldRoster.merge(northernRoster);
                worldRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
                southernRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
                northernRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
                
                world.dataProvider = worldRoster;
                
                nameTI.text = "";
                goalsTI.text = "";
            }
        }        

        private function createDataGrids():void {
            southern = new DataGrid();
            northern = new DataGrid();
            world = new DataGrid();
            southern.move(10,100);
            northern.move(180,100);
            world.move(350,100);
            southern.setSize(170, 250);
            northern.setSize(170, 250);
            world.setSize(170, 250);
            southern.columns = 
            northern.columns = 
            world.columns = [ "Name", "Goals" ];
            southern.dataProvider = southernRoster;
            northern.dataProvider = northernRoster;            
            addChild(southern);
            addChild(northern);
            addChild(world);

            var northernLabel:Label = new Label();
            northernLabel.autoSize = TextFieldAutoSize.LEFT;
            northernLabel.text = "Southern Hemisphere";
            northernLabel.move(10,75);
            addChild(northernLabel);
            var southernLabel:Label = new Label();
            southernLabel.autoSize = TextFieldAutoSize.LEFT;
            southernLabel.text = "Northern Hemisphere";
            southernLabel.move(180,75);
            addChild(southernLabel);
            var majorLabel:Label = new Label();
            majorLabel.autoSize = TextFieldAutoSize.LEFT;
            majorLabel.text = "World";
            majorLabel.move(350,75);
            addChild(majorLabel);
        }
    }
}