包 | 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 | 调度了事件的对象。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 | 调度了事件的对象。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, 11:04 AM Z