| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
DataProvider 클래스는 List, DataGrid, TileList 및 ComboBox 같은 목록 기반 구성 요소에서 데이터를 쿼리하고 수정할 수 있는 메서드와 속성을 제공합니다.
데이터 공급자는 데이터 소스로 사용되는 항목의 선형 컬렉션(예: 배열)입니다. 데이터 공급자의 각 항목은 데이터의 필드 하나 이상에 포함된 객체 또는 XML 객체입니다. DataProvider.getItemAt() 메서드를 사용하여 인덱스별로 데이터 공급자에 포함된 항목에 액세스할 수 있습니다.
예제 보기
length:uint [읽기 전용]
| 런타임 버전: | 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);
public function DataProvider(value:Object = null)| 런타임 버전: | 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);
public function addItem(item:Object):void| 런타임 버전: | 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);
public function addItemAt(item:Object, index:uint):void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 인덱스의 데이터 공급자에 새 항목을 추가합니다. 지정한 인덱스가 데이터 공급자의 길이를 초과하면 인덱스가 무시됩니다.
매개 변수
| item:Object — 추가할 객체입니다. 이 객체에는 항목의 데이터가 포함되어 있습니다. |
| |
| index:uint — 항목이 추가될 인덱스입니다. |
오류 | RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다. |
참고 사항
public function addItems(items:Object):void| 런타임 버전: | 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);
public function addItemsAt(items:Object, index:uint):void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 인덱스의 데이터 공급자에 여러 항목을 추가하고 DataChangeType.ADD 이벤트를 전달합니다.
매개 변수
| items:Object — 데이터 공급자에 추가할 항목입니다. |
| |
| index:uint — 항목이 삽입될 인덱스입니다. |
오류 | RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다. |
참고 사항
public function clone():DataProvider| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
현재 DataProvider 객체의 복사본을 만듭니다.
반환값 public function concat(items:Object):void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 항목을 현재 데이터 공급자의 끝에 연결합니다. 이 메서드는 DataChangeType.ADD 이벤트를 전달합니다.
매개 변수
| items:Object — 데이터 공급자에 추가할 항목입니다. |
참고 사항
public function getItemAt(index:uint):Object| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 인덱스에 해당하는 항목을 반환합니다.
매개 변수
| index:uint — 반환할 항목의 위치입니다. |
반환값오류 | RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다. |
참고 사항
public function getItemIndex(item:Object):int| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 항목의 인덱스를 반환합니다.
매개 변수
반환값 | int — 지정된 항목의 인덱스입니다. 지정된 항목이 없는 경우 -1입니다. |
참고 사항
public function invalidate():void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
DataProvider에 포함된 모든 데이터 항목을 무효화하고 DataChangeEvent.INVALIDATE_ALL 이벤트를 전달합니다. 항목이 변경된 후에 무효화됩니다. DataProvider는 무효화된 항목을 자동으로 다시 그립니다.
참고 사항
public function invalidateItem(item:Object):void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 항목을 무효화합니다. 항목이 변경된 후에 무효화됩니다. DataProvider는 무효화된 항목을 자동으로 다시 그립니다.
매개 변수
참고 사항
public function invalidateItemAt(index:int):void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 인덱스의 항목을 무효화합니다. 항목이 변경된 후에 무효화됩니다. DataProvider는 무효화된 항목을 자동으로 다시 그립니다.
매개 변수
| index:int — 무효화할 항목의 인덱스입니다. |
오류 | RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다. |
참고 사항
public function merge(newData:Object):void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 데이터를 데이터 공급자에 포함된 데이터에 추가하고 중복된 항목을 제거합니다. 이 메서드는 DataChangeType.ADD 이벤트를 전달합니다.
매개 변수
| newData:Object — 데이터 공급자에 병합할 데이터입니다. |
참고 사항
public function removeAll():void| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터 공급자에서 모든 항목을 제거하고 DataChangeType.REMOVE_ALL 이벤트를 전달합니다.
참고 사항
public function removeItem(item:Object):Object| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터 공급자에서 지정된 항목을 제거하고 DataChangeType.REMOVE 이벤트를 전달합니다.
매개 변수
반환값참고 사항
public function removeItemAt(index:uint):Object| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 인덱스의 항목을 제거하고 DataChangeType.REMOVE 이벤트를 전달합니다.
매개 변수
| index:uint — 제거할 항목의 인덱스입니다. |
반환값오류 | RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다. |
참고 사항
public function replaceItem(newItem:Object, oldItem:Object):Object| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
기존 항목을 새 항목으로 교체하고 DataChangeType.REPLACE 이벤트를 전달합니다.
매개 변수
반환값오류참고 사항
public function replaceItemAt(newItem:Object, index:uint):Object| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정된 인덱스의 항목을 교체하고 DataChangeType.REPLACE 이벤트를 전달합니다.
매개 변수
| newItem:Object — 교체 항목입니다. |
| |
| index:uint — 교체할 항목의 인덱스입니다. |
반환값오류 | RangeError — 지정한 인덱스가 0보다 작거나 데이터 공급자의 길이보다 크거나 같습니다. |
참고 사항
public function sort(... sortArgs):*| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터 공급자에 포함된 항목을 정렬하고 DataChangeType.SORT 이벤트를 전달합니다.
매개 변수
| ... sortArgs — 정렬에 사용할 인수입니다. |
반환값 | * —
반환값은 메서드의 인수 수신 여부에 따라 달라집니다. 자세한 내용은 Array.sort() 메서드를 참조하십시오. sortOption 속성이 Array.UNIQUESORT로 설정된 경우 이 메서드는 0을 반환합니다 .
|
참고 사항
public function sortOn(fieldName:Object, options:Object = null):*| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
지정한 필드에 따라 데이터 공급자에 포함된 데이터를 정렬하고 DataChangeType.SORT 이벤트를 전달합니다. 지정한 필드는 문자열이거나, 여러 필드를 우선 순위에 따라 정렬하도록 지정하는 문자열 값의 배열일 수 있습니다.
매개 변수
| fieldName:Object — 정렬 기준이 되는 항목 필드입니다. 이 값은 문자열이거나 문자열 값의 배열일 수 있습니다. |
| |
| options:Object (default = null) — 정렬 옵션입니다. |
반환값 | * —
반환값은 메서드의 인수 수신 여부에 따라 달라집니다. 자세한 내용은 Array.sortOn() 메서드를 참조하십시오. sortOption 속성이 Array.UNIQUESORT로 설정된 경우 이 메서드는 0을 반환합니다.
|
참고 사항
public function toArray():Array| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터 공급자에 포함된 데이터의 Array 객체 표현을 만듭니다.
반환값 | Array — 데이터 공급자에 포함된 데이터의 Array 객체 표현입니다. |
override public function toString():String| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터 공급자에 포함된 데이터의 문자열 표현을 만듭니다.
반환값 | String — 데이터 공급자에 포함된 데이터의 문자열 표현입니다. |
이벤트 객체 유형: fl.events.DataChangeEvent속성 DataChangeEvent.type = fl.events.DataChangeEvent.DATA_CHANGE| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터가 변경된 후에 전달됩니다.
dataChange 이벤트 객체의
type 속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
| 속성 | 값 |
|---|
bubbles
|
false
|
cancelable
|
false; 취소할 기본 비헤이비어가 없습니다.
|
changeType
| 적용된 변경 사항의 유형을 확인합니다. |
currentTarget
| 이벤트 리스너를 통해 이벤트 객체를 처리하고 있는 객체입니다. |
endIndex
| 마지막으로 변경된 항목의 인덱스를 확인합니다. |
items
| 변경된 항목을 나열하는 배열입니다. |
startIndex
| 첫 번째로 변경된 항목의 인덱스를 확인합니다. |
target
|
이벤트를 전달한 객체입니다. 이벤트를 수신하는 객체와는 다를 수도 있습니다. 이벤트를 수신하는 객체에 액세스하려면 currentTarget 속성을 사용합니다.
|
참고 사항
이벤트 객체 유형: fl.events.DataChangeEvent속성 DataChangeEvent.type = fl.events.DataChangeEvent.PRE_DATA_CHANGE| 런타임 버전: | AIR 1.0 Flash Player 9.0.28.0 |
데이터가 변경되기 전에 전달됩니다.
preDataChange 이벤트 객체의
type 속성 값을 정의합니다. 이 이벤트 객체는 구성 요소 데이터를 변경하기 전에 전달됩니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
| 속성 | 값 |
|---|
bubbles
|
false
|
cancelable
|
false; 취소할 기본 비헤이비어가 없습니다.
|
changeType
| 적용할 변경 사항의 유형을 확인합니다. |
currentTarget
| 이벤트 리스너를 통해 이벤트 객체를 처리하고 있는 객체입니다. |
endIndex
| 변경할 마지막 항목의 인덱스를 확인합니다. |
items
| 변경할 항목을 나열하는 배열입니다. |
startIndex
| 변경할 첫 번째 항목의 인덱스를 확인합니다. |
target
|
이벤트를 전달한 객체입니다. 이벤트를 수신하는 객체와는 다를 수도 있습니다. 이벤트를 수신하는 객체에 액세스하려면 currentTarget 속성을 사용합니다.
|
참고 사항
다음 예제에서는 데이터 공급자를 사용하여 여러 데이터 격자의 내용을 유지할 수 있는 방법을 보여 줍니다.
예제를 실행하려면 다음 단계를 수행합니다.
- 라이브러리에 Label, Button, ComboBox, TextInput 및 DataGrid 구성 요소를 추가합니다.
- 이 코드를 FLA 파일과 같은 디렉토리에 DataProviderExample.as로 저장합니다.
- 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);
}
}
}
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Thu Jan 8 2009, 02:16 AM -08:00