| 包 | 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
隐藏继承的公共属性
显示继承的公共属性