| 套件 | fl.data |
| 類別 | public class DataProvider |
| 繼承 | DataProvider EventDispatcher Object |
| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
「資料提供者」是當做資料來源 (例如陣列) 之項目的線性集合。 資料提供者中的每個項目都是包含一個或多個資料欄位的物件或 XML 物件。 您可以使用 DataProvider.getItemAt() 方法,依據索引存取資料提供者中包含的項目。
| 屬性 | 定義自 | ||
|---|---|---|---|
![]() | constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | |
| length : uint [唯讀]
資料提供者包含的項目數。 | DataProvider | ||
| 方法 | 定義自 | ||
|---|---|---|---|
DataProvider(value:Object = null)
會使用資料物件的清單、XML 實體或陣列做為資料來源,以建立新的 DataProvider 物件。 | DataProvider | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | |
會將項目附加至資料提供者的結尾。 | DataProvider | ||
在資料提供者中指定的索引位置加入新項目。 | DataProvider | ||
會將多個項目附加至 DataProvider 的結尾,並傳送 DataChangeType.ADD 事件。 | DataProvider | ||
會將幾個項目加入至資料提供者中的指定索引位置,並傳送 DataChangeType.ADD 事件。 | DataProvider | ||
會建立目前 DataProvider 物件的副本。 | DataProvider | ||
會將指定的項目連接到目前資料提供者的結尾。 | DataProvider | ||
![]() |
會將事件傳送到事件流程。 | EventDispatcher | |
傳回指定索引位置的項目。 | DataProvider | ||
傳回指定項目的索引。 | DataProvider | ||
![]() |
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | |
![]() |
指出物件是否有已定義的指定屬性。 | Object | |
會使 DataProvider 包含的所有資料項目無效化,並傳送 DataChangeEvent.INVALIDATE_ALL 事件。 | DataProvider | ||
將指定的項目無效化。 | DataProvider | ||
將位於指定索引位置的項目無效化。 | DataProvider | ||
![]() |
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | |
會將指定的資料附加至資料提供者包含的資料中,並移除所有重複的項目。 | DataProvider | ||
![]() |
指出指定的屬性是否存在,以及是否可列舉。 | Object | |
從資料提供者移除所有項目,並傳送 DataChangeType.REMOVE_ALL 事件。 | DataProvider | ||
![]() |
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | |
會從資料提供者移除項目,並傳送 DataChangeType.REMOVE 事件。 | DataProvider | ||
移除位於指定索引的項目,並傳送 DataChangeType.REMOVE 事件。 | DataProvider | ||
會以新項目取代現有的項目,並傳送 DataChangeType.REPLACE 事件。 | DataProvider | ||
會取代位於指定索引位置的項目,並傳送 DataChangeType.REPLACE 事件。 | DataProvider | ||
![]() |
為迴圈作業設定動態屬性的可用性。 | Object | |
會排序資料提供者包含的項目,並傳送 DataChangeType.SORT 事件。 | DataProvider | ||
會依照指定的欄位排序資料提供者包含的項目,並傳送 DataChangeType.SORT 事件。 | DataProvider | ||
會建立資料提供者所包含資料的 Array 物件形式。 | DataProvider | ||
![]() |
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | |
[覆寫]
會建立資料提供者所包含資料的字串形式。 | DataProvider | ||
![]() |
會傳回指定之物件的基本值。 | Object | |
![]() |
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher | |
| 事件 | 摘要 | 定義自 | ||
|---|---|---|---|---|
![]() | [廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | ||
| 在變更資料之後傳送。 | DataProvider | |||
![]() | [廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | ||
| 在變更資料之前傳送。 | DataProvider | |||
length | 屬性 |
length:uint [唯讀] | 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
資料提供者包含的項目數。
實作
public function get length():uint範例 ( 如何使用本範例 )
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 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.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);
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);
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);
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 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會將項目附加至資料提供者的結尾。
參數
item:Object — 要附加至目前資料提供者結尾的項目。
|
相關 API 元素
範例 ( 如何使用本範例 )
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 | () | 方法 |
addItems | () | 方法 |
public function addItems(items:Object):void| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會將多個項目附加至 DataProvider 的結尾,並傳送 DataChangeType.ADD 事件。 這些項目是依照指定的順序加入的。
參數
items:Object — 要附加至資料提供者的項目。
|
相關 API 元素
範例 ( 如何使用本範例 )
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 | () | 方法 |
clone | () | 方法 |
public function clone():DataProvider| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會建立目前 DataProvider 物件的副本。
傳回值DataProvider — 此 DataProvider 物件的新實體。
|
concat | () | 方法 |
getItemAt | () | 方法 |
public function getItemAt(index:uint):Object| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
傳回指定索引位置的項目。
參數
index:uint — 要傳回之項目的位置。
|
Object — 位於指定索引位置的項目。
|
擲回值
RangeError — 指定的索引小於 0,或者大於或等於資料提供者的長度。
|
相關 API 元素
getItemIndex | () | 方法 |
invalidate | () | 方法 |
public function invalidate():void| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會使 DataProvider 包含的所有資料項目無效化,並傳送 DataChangeEvent.INVALIDATE_ALL 事件。 項目會在發生變更之後無效化。DataProvider 會自動重繪這些無效化的項目。
相關 API 元素
invalidateItem | () | 方法 |
invalidateItemAt | () | 方法 |
public function invalidateItemAt(index:int):void| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
將位於指定索引位置的項目無效化。項目會在發生變更之後無效化。DataProvider 會自動重繪此無效化的項目。
參數
index:int — 要無效化之項目的索引。
|
擲回值
RangeError — 指定的索引小於 0,或者大於或等於資料提供者的長度。
|
相關 API 元素
merge | () | 方法 |
removeAll | () | 方法 |
public function removeAll():void| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
從資料提供者移除所有項目,並傳送 DataChangeType.REMOVE_ALL 事件。
相關 API 元素
removeItem | () | 方法 |
removeItemAt | () | 方法 |
public function removeItemAt(index:uint):Object| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
移除位於指定索引的項目,並傳送 DataChangeType.REMOVE 事件。
參數
index:uint — 要移除之項目的索引。
|
Object — 已移除的項目。
|
擲回值
RangeError — 指定的索引小於 0,或者大於或等於資料提供者的長度。
|
相關 API 元素
replaceItem | () | 方法 |
replaceItemAt | () | 方法 |
public function replaceItemAt(newItem:Object, index:uint):Object| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會取代位於指定索引位置的項目,並傳送 DataChangeType.REPLACE 事件。
參數
newItem:Object — 取代項目。
| |
index:uint — 要取代之項目的索引。
|
Object — 已遭取代的項目。
|
擲回值
RangeError — 指定的索引小於 0,或者大於或等於資料提供者的長度。
|
相關 API 元素
sort | () | 方法 |
sortOn | () | 方法 |
public function sortOn(fieldName:Object, options:Object = null):*| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
會依照指定的欄位排序資料提供者包含的項目,並傳送 DataChangeType.SORT 事件。 指定的欄位可以是字串,或是字串值的陣列 (這些字串值會指定按先後順序做為排序依據的多個欄位)。
參數
fieldName:Object — 排序所依據的項目欄位。 這個值可以是字串或字串值的陣列。
| |
options:Object (default = null) — 排序的選項。
|
* — 傳回值取決於方法是否接受任何引數。 如需詳細資訊,請參閱 Array.sortOn() 方法。 如果 sortOption 屬性設定為 Array.UNIQUESORT,此方法會傳回 0。
|
相關 API 元素
toArray | () | 方法 |
toString | () | 方法 |
dataChange | 事件 |
fl.events.DataChangeEvent屬性 DataChangeEvent.type =
fl.events.DataChangeEvent.DATA_CHANGE| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
在變更資料之後傳送。
會定義dataChange 事件物件的 type 屬性值。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
changeType | 會識別所做變更的類型。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
endIndex | 會識別最後一個變更項目的索引。 |
items | 用於列出已變更之項目的陣列。 |
startIndex | 會識別第一個變更項目的索引。 |
target | 已經傳送該事件的物件。 此目標不一定是偵聽該事件的物件。 您可以使用 currentTarget 屬性,存取目前正在偵聽該事件的物件。 |
相關 API 元素
preDataChange | 事件 |
fl.events.DataChangeEvent屬性 DataChangeEvent.type =
fl.events.DataChangeEvent.PRE_DATA_CHANGE| 語言版本: | ActionScript 3.0 |
| 產品版本: | Flash CS3 |
| 執行階段版本: | Flash Player 9.0.28.0, AIR 1.0 |
在變更資料之前傳送。
會定義preDataChange 事件物件的 type 屬性值。 在變更組件資料之前,會先傳送此事件物件。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
changeType | 會識別即將進行的變更類型。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
endIndex | 會識別即將變更之最後一個項目的索引。 |
items | 用於列出即將變更之項目的陣列。 |
startIndex | 會識別即將變更之第一個項目的索引。 |
target | 已經傳送該事件的物件。 此目標不一定是偵聽該事件的物件。 您可以使用 currentTarget 屬性,存取目前正在偵聽該事件的物件。 |
相關 API 元素
若要執行範例,請遵循下列步驟:
- 將 Label、Button、ComboBox、TextInput 和 DataGrid 組件加入元件庫。
- 將此程式碼另存為 DataProviderExample.as,與 FLA 檔放在同一個目錄中。
- 將 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);
}
}
}
Tue Jun 12 2018, 03:47 PM Z
隱藏繼承公用屬性
顯示繼承公用屬性