套件 | 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