fl.data
public class DataProvider
继承DataProvider Inheritance EventDispatcher Inheritance Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

DataProvider 类提供一些方法和属性,这些方法和属性允许您查询和修改任何基于列表的组件(例如,List、DataGrid、TileList 或 ComboBox 组件)中的数据。

数据提供者 是用作数据源的项目的线性集合,例如,一个数组。 数据提供者中的每个项目都是包含一个或多个数据字段的对象或 XML 对象。 通过使用 DataProvider.getItemAt() 方法,可以按索引访问数据提供者中包含的项目。

查看示例




公共 属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  length : uint
[read-only] 数据提供者包含的项目数。
DataProvider
 Inheritedprototype : Object
[static] 对类或函数对象的原型对象的引用。
Object
公共 方法
 方法定义方
  
DataProvider(value:Object = null)
通过将列表、XML 实例或数据对象数组作为数据源,创建一个新的 DataProvider 对象。
DataProvider
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
将项目追加到数据提供者的结尾。
DataProvider
  
addItemAt(item:Object, index:uint):void
将新项目添加到数据提供者的指定索引处。
DataProvider
  
向 DataProvider 的末尾追加多个项目,并调度 DataChangeType.ADD 事件。
DataProvider
  
addItemsAt(items:Object, index:uint):void
向数据提供者的指定索引处添加若干项目,并调度 DataChangeType.ADD 事件。
DataProvider
  
创建当前 DataProvider 对象的副本。
DataProvider
  
concat(items:Object):void
将指定项目连接到当前数据提供者的结尾。
DataProvider
 Inherited
将事件调度到事件流中。
EventDispatcher
  
返回指定索引处的项目。
DataProvider
  
返回指定项目的索引。
DataProvider
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
使 DataProvider 包含的所有数据项失效,并调度 DataChangeEvent.INVALIDATE_ALL 事件。
DataProvider
  
使指定的项目失效。
DataProvider
  
使指定索引处的项目失效。
DataProvider
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
merge(newData:Object):void
将指定数据追加到数据提供者包含的数据,并删除任何重复的项目。
DataProvider
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
从数据提供者中删除所有项目,并调度 DataChangeType.REMOVE_ALL 事件。
DataProvider
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
从数据提供者中删除指定项目,并调度 DataChangeType.REMOVE 事件。
DataProvider
  
删除指定索引处的项目,并调度 DataChangeType.REMOVE 事件。
DataProvider
  
replaceItem(newItem:Object, oldItem:Object):Object
用新项目替换现有项目,并调度 DataChangeType.REPLACE 事件。
DataProvider
  
replaceItemAt(newItem:Object, index:uint):Object
替换指定索引处的项目,并调度 DataChangeType.REPLACE 事件。
DataProvider
 Inherited
设置循环操作动态属性的可用性。
Object
  
sort(... sortArgs):*
对数据提供者包含的项目进行排序,并调度 DataChangeType.SORT 事件。
DataProvider
  
sortOn(fieldName:Object, options:Object = null):*
按指定字段对数据提供者包含的项目进行排序,并调度 DataChangeType.SORT 事件。
DataProvider
  
创建数据提供者包含的数据的 Array 对象表示形式。
DataProvider
  
创建数据提供者包含的数据的字符串表示形式。
DataProvider
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件摘要定义方
 Inherited Flash Player 获得操作系统焦点并变为活动状态时调度。EventDispatcher
   在更改数据之后调度。DataProvider
 Inherited Flash Player 失去操作系统焦点并变为非活动状态时调度。EventDispatcher
   在更改数据之前调度。DataProvider
属性详细信息
length属性
length:uint  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : 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);
构造函数详细信息
DataProvider()构造函数
public function DataProvider(value:Object = null)

语言版本 : ActionScript 3.0
Player 版本 : 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);
方法详细信息
addItem()方法
public function addItem(item:Object):void

语言版本 : ActionScript 3.0
Player 版本 : 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);
addItemAt()方法 
public function addItemAt(item:Object, index:uint):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

将新项目添加到数据提供者的指定索引处。 如果指定的索引超过数据提供者的长度,则忽略该索引。

参数

item:Object — 包含要添加的项目数据的对象。
 
index:uint — 要在其位置添加项目的索引。


引发
RangeError — 指定的索引小于 0 或大于等于数据提供者的长度。

另请参见

addItems()方法 
public function addItems(items:Object):void

语言版本 : ActionScript 3.0
Player 版本 : 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);
addItemsAt()方法 
public function addItemsAt(items:Object, index:uint):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

向数据提供者的指定索引处添加若干项目,并调度 DataChangeType.ADD 事件。

参数

items:Object — 要添加到数据提供者的项目。
 
index:uint — 要在其位置插入项目的索引。


引发
RangeError — 指定的索引小于 0 或大于等于数据提供者的长度。

另请参见

clone()方法 
public function clone():DataProvider

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

创建当前 DataProvider 对象的副本。

返回
DataProvider — 该 DataProvider 对象的新实例。
concat()方法 
public function concat(items:Object):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

将指定项目连接到当前数据提供者的结尾。 此方法调度 DataChangeType.ADD 事件。

参数

items:Object — 要添加到数据提供者的项目。

另请参见

getItemAt()方法 
public function getItemAt(index:uint):Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

返回指定索引处的项目。

参数

index:uint — 要返回的项目的位置。

返回
Object — 指定索引处的项目。

引发
RangeError — 指定的索引小于 0 或大于等于数据提供者的长度。

另请参见

getItemIndex()方法 
public function getItemIndex(item:Object):int

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

返回指定项目的索引。

参数

item:Object — 要查找的项目。

返回
int — 指定项目的索引;如果没有找到指定项目,则为 -1。

另请参见

invalidate()方法 
public function invalidate():void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

使 DataProvider 包含的所有数据项失效,并调度 DataChangeEvent.INVALIDATE_ALL 事件。 项目在更改以后会失效;DataProvider 会自动重绘失效的项目。

另请参见

invalidateItem()方法 
public function invalidateItem(item:Object):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

使指定的项目失效。 项目在更改以后会失效;DataProvider 会自动重绘失效的项目。

参数

item:Object — 要使之失效的项目。

另请参见

invalidateItemAt()方法 
public function invalidateItemAt(index:int):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

使指定索引处的项目失效。 项目在更改以后会失效;DataProvider 会自动重绘失效的项目。

参数

index:int — 要使之失效的项目的索引。


引发
RangeError — 指定的索引小于 0 或大于等于数据提供者的长度。

另请参见

merge()方法 
public function merge(newData:Object):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

将指定数据追加到数据提供者包含的数据,并删除任何重复的项目。 此方法调度 DataChangeType.ADD 事件。

参数

newData:Object — 要合并到数据提供者的数据。

另请参见

removeAll()方法 
public function removeAll():void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

从数据提供者中删除所有项目,并调度 DataChangeType.REMOVE_ALL 事件。

另请参见

removeItem()方法 
public function removeItem(item:Object):Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

从数据提供者中删除指定项目,并调度 DataChangeType.REMOVE 事件。

参数

item:Object — 要删除的项目。

返回
Object — 被删除的项目。

另请参见

removeItemAt()方法 
public function removeItemAt(index:uint):Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

删除指定索引处的项目,并调度 DataChangeType.REMOVE 事件。

参数

index:uint — 要删除的项目的索引。

返回
Object — 被删除的项目。

引发
RangeError — 指定的索引小于 0 或大于等于数据提供者的长度。

另请参见

replaceItem()方法 
public function replaceItem(newItem:Object, oldItem:Object):Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

用新项目替换现有项目,并调度 DataChangeType.REPLACE 事件。

参数

newItem:Object — 要替换的项目。
 
oldItem:Object — 替换项目。

返回
Object — 被替换的项目。

引发
RangeError — 无法在数据提供者中找到项目。

另请参见

replaceItemAt()方法 
public function replaceItemAt(newItem:Object, index:uint):Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

替换指定索引处的项目,并调度 DataChangeType.REPLACE 事件。

参数

newItem:Object — 替换项目。
 
index:uint — 要替换的项目的索引。

返回
Object — 被替换的项目。

引发
RangeError — 指定的索引小于 0 或大于等于数据提供者的长度。

另请参见

sort()方法 
public function sort(... sortArgs):*

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

对数据提供者包含的项目进行排序,并调度 DataChangeType.SORT 事件。

参数

... sortArgs — 用于排序的参数。

返回
* — 返回值取决于方法是否接收任何参数。 有关详细信息,请参阅 Array.sort() 方法。 当 sortOption 属性设置为 Array.UNIQUESORT 时,该方法返回 0。

另请参见

sortOn()方法 
public function sortOn(fieldName:Object, options:Object = null):*

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

按指定字段对数据提供者包含的项目进行排序,并调度 DataChangeType.SORT 事件。 指定字段可以是字符串或字符串值数组,这些字符串值指定要按优先顺序对其进行排序的多个字段。

参数

fieldName:Object — 要按其进行排序的项目字段。 该值可以是字符串或字符串值数组。
 
options:Object (default = null) — 用于排序的选项。

返回
* — 返回值取决于方法是否接收任何参数。 有关详细信息,请参阅“Array.sortOn() 方法”。 如果 sortOption 属性设置为 Array.UNIQUESORT,则该方法返回 0。

另请参见

toArray()方法 
public function toArray():Array

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

创建数据提供者包含的数据的 Array 对象表示形式。

返回
Array — 数据提供者包含的数据的 Array 对象表示形式。
toString()方法 
public override function toString():String

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

创建数据提供者包含的数据的字符串表示形式。

返回
String — 数据提供者包含的数据的字符串表示形式。
事件详细信息
dataChange 事件
事件对象类型: fl.events.DataChangeEvent
DataChangeEvent.type property = fl.events.DataChangeEvent.DATA_CHANGE

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

在更改数据之后调度。

定义 dataChange 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
changeType标识所做更改的类型。
currentTarget当前正在使用某个事件侦听器处理事件对象的对象。
endIndex标识最后一个更改的项目的索引。
items列出更改的项目的数组。
startIndex标识第一个更改的项目的索引。
target调度了事件的对象。target 不一定是侦听该事件的对象。使用 currentTarget 属性可以访问侦听该事件的对象。

另请参见

preDataChange 事件  
事件对象类型: fl.events.DataChangeEvent
DataChangeEvent.type property = fl.events.DataChangeEvent.PRE_DATA_CHANGE

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9.0.28.0

在更改数据之前调度。

定义 preDataChange 事件对象的 type 属性值。该事件对象在更改组件数据之前调度。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
changeType标识所要做的更改的类型。
currentTarget当前正在使用某个事件侦听器处理事件对象的对象。
endIndex标识要更改的最后一个项目的索引。
items列出更改的项目的数组。
startIndex标识要更改的第一个项目的索引。
target调度了事件的对象。target 不一定是侦听该事件的对象。使用 currentTarget 属性可以访问侦听该事件的对象。

另请参见

示例 如何使用示例

该示例演示如何使用数据提供者来维护多个数据网格的内容。

若要运行该示例,请按照下列步骤操作:

  1. 将 Label、Button、ComboBox、TextInput 和 DataGrid 组件添加到库中。
  2. 将该代码作为 DataProviderExample.as 另存到 FLA 文件所在的同一目录中。
  3. 将 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);
        }
    }
}




 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/fl/data/DataProvider.html