使用 Flash |
|
|
|
| 数据集成(仅?Flash Professional?/a> > 数据管理(仅?Flash Professional?/a> > ?DataSet 组件管理数据(仅?Flash Professional? | |||
数据驱动的应用程序的基本数据结构是一个有行和列,或字段的表。要展示表中当前行的字段,您必须?quot;架构"选项卡上定义 DataSet 组件的属性。(有关示例,请参阅访问数据中的设计时示例。)
在为 DataSet 组件指定架构后,您通常要创建与 DataSet 组件的下列绑定:
下图说明了在使用 DataSet 组件时通常需要的数据绑定?/p>

DataSet 组件用于保持和组织数据;您必须使用数据绑定和编写 ActionScript 代码来处理更新。可以跟踪通过 UI 组件对数据进行的更改,并将其用于生成 DeltaPacket,后者是 DataSet 组件产生的对象,包含在运行时对数据所作更改的列表。然后解析程序组件可以将 DeltaPacket 转化为特定格式供外部数据源使用。您可以使用 DataSet 组件?logChanges() 方法跟踪对数据和所调用方法的更改。下图显示了经过 UI 组件、DataSet 和解析程序组件、以及所产生?DeltaPacket 对象的数据流?/p>

有关通用工作流程和如何使?DataSet 组件的方法、属性和事件管理数据的信息,请参?quot;组件语言参?quot;中的使用 DataSet 组件?a href="../ComponentRef/00003321.html#712368">DataSet 类(仅限 Flash Professional?/a>?DeltaPacket 接口(仅?Flash Professional?/a>?/p>
DataSet 组件使用 DataBinding 类中的功能。如果您只想?ActionScript 中处?DataSet 组件,而不使用"组件"检查器中的"绑定"?quot;架构"选项卡设置属性,则您必须?DataBinding 类导?FLA 文件中并在代码中设置架构属性。有关详细信息,请参?quot;组件语言参?quot;中的使数据绑定类在运行时可用(仅?#160;Flash Professional?/a>?/p>
DataSet 组件仅在 Flash Player 7 或更高版本中起作用?/p>
有关?DataSet 组件中处理数据的详细信息,请参阅以下主题?/p>
要将数据加载?DataSet 组件中,您要编辑 DataSet 的架构,并创建数据绑定(可在 ActionScript 中或"组件"检查器?quot;绑定"选项卡上完成)。大多数情况下,您需要编辑架构才能使数据在应用程序中正确显示。有关编辑架构的信息,请参阅将组件属性添加到架构?a href="00000764.html#222102">将架构字段添加到架构项目 对象可以是复杂的客户端对象,反映其服务器端的对应者,也可以是最简单的形式,即匿名对象(这些对象带有表示数据记录中字段的公共属性)的集合?/p>
DataSet 组件使用 DataBinding 类中的功能。如果您只想?ActionScript 中处?DataSet 组件,而不使用"组件"检查器中的"绑定"?quot;架构"选项卡设置属性,则您需要将 DataBinding 类导?FLA 文件中并在代码中设置架构属性。有关详细信息,请参?quot;使用组件"中的"使数据绑定类在运行时可用(仅?Flash Professional?quot;?/p>
以下示例说明将对象加载到 DataSet 组件的不同方法,使用 ActionScript 代码?quot;组件"检查器。示例假设您先在"架构"选项卡上指定?DataSet 组件的架构;请参?a href="00000778.html#223011">访问数据关于将数据加载到 DataSet 组件?/h3>
DataSet.items 属性的对象数组(请参阅"组件语言参?quot;中的 DataSet.items)?/li>
DataSet.dataProvider 属性的对象。此对象应该实现 DataProvider 接口;请参阅"组件语言参?quot;中的 DataSet.dataProvider 属性和 DataProvider API?/li>
匿名对象 以下 ActionScript 示例?100 个匿名对象的数组分配?DataSet 组件?myDataSet 实例?items 属性。每个对象代表一条数据记录?/p>
function loadData() {
var recData = new Array();
for( var i:Number=0; i<100; i++ ) {
recData[i]= {id:i, name:String("name"+i), price:i*.5};
}
myDataSet.items = recData;
}
远程 RecordSet 以下 ActionScript 示例假设您正在使?Flash Remoting,并且执行了返回 RecordSet 的远程调用。RecordSet 对象实现 DataProvider 接口。结果被分配?myDataset 组件实例?dataProvider 属性:
function getSQLData_Result(result) {
myDataset.dataProvider = result;
}
?Web 服务返回的对象数?#160;下图显示了使?quot;组件"检查器绑定?Web 服务返回的对象数组的示例,该服务?WebServiceConnector 组件?myWsc 实例表示。左图显示了 Web 服务的架构。右图显示了 results 数组如何被绑定到 myDataset 组件实例?items 属性?/p>

?XMLConnector 组件返回的对象数?/strong> 下图显示了使?quot;组件"检查器绑定 XML 节点数组的示例,这些节点?XMLConnector 组件表示。它假设您导入了 XML 文件的架构,该文件包?XML 节点的数组。左图显示了 XML 文档的架构,XML 节点的数组被显示?ActionScript 数组。右图显示了 将数据加载到 DataSet 组件并定义了 DataSet 组件的架构之后,就可以访问数据了。您可以在运行时或设计时访问数据?/p>
运行时示例?/strong>在运行时访问数据十分简单。因为数据是作为对象加载的,所以通过可在代码中引用的属性展示数据。DataSet 组件有一个方?( 下列代码显示了在运行时访问数据的示例。它加载含有客户信息的现?DataSet 组件实例 设计时示例?/strong>在设计时?DataSet 组件创建字段是另一种展示数据对象属性的方法。一旦定义了字段,您就可以在设计时直观地?UI 控件绑定到数据。您可以在设计时?DataSet 字段设置附加属性(架构项目设置),以影响在运行时对数据编码、格式化和验证的方式。有关详细信息,请参?a href="00000784.html#223351">架构项目设置?/p>
要在设计时设置到此数据的绑定,您要为表示对象属性的 DataSet 组件创建永久性字段。以下过程显示了如何在设计时访问相同客户信息的示例。与运行时示例一样,?ActionScript 中将 在数据网格中会显示数据集中所含数据?/p>
在设计时使用添加?quot;架构"选项卡的动态组件属性的能力?DataSet 组件的一项特殊功能。DataSet 组件使用这些属性的字段名称,将它们映射到对象或对象数组的属性。设置将在设计时应用到这些属性,并随后由数据集在运行时使用?/p>
如果没有?DataSet 组件创建永久性字段,并且您将该组件绑定到 WebServiceConnector 组件或定义架构的 XMLConnector 组件,则 DataSet 组件将尝试根据连接器组件的架构创建正确的字段,而这可能不起作用。有关详细信息,请参?a href="00000778.html#222879">?DataSet 组件管理数据(仅?Flash Professional?/a>?/p>
注意 ?DataSet 组件定义的永久性字段优先于连接器组件的架构?/p>
results.datapacket.row 数组如何被绑定到 DataSet 组件?myDataset 实例?dataProvider 属性?/p>

访问数据
DataSet.first),可以使数组中第一个项目成为当前选定的对象?/p>
myDataSet,然后在跟踪窗口中显示每个客户的姓名。请注意,已添加客户信息的数据类型(对象数组),这样数据才能正确显示?/p>
//?DataSet 组件拖到舞台,并命名?myDataSet(创建实例和导入所需要的库的最简便方法)
//创建 recData,它在对象数组中包含客户信息
var recData = [{id:0, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true},
{id:1, firstName:"Susan", lastName:"Meth", age:55, usCitizen:true},
{id:2, firstName:"Pablo", lastName:"Picasso", age:108, usCitizen:false}];
//?recData 分配?quot;myDataSet"DataSet 组件实例?items 属?
myDataSet.items = recData;
//添加所需字段的架构类?
var i:mx.data.types.Str;
var j:mx.data.types.Num;
//使第一个项目成为当前项?
myDataSet.first();
//通过属性跟?
while ( myDataSet.hasNext() ) {
//通过 Dataset 属性访问数?
trace(myDataSet.firstName + " " + myDataSet.lastName);
myDataSet.next();
}
recData 对象数组绑定?DataSet 组件?items 属性。然后使?quot;组件"检查器?DataGrid.dataProvider 绑定?myDataSet.items?/p>
要在设计时访问数据:
var recData = [{id:0, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true},
{id:1, firstName:"Susan", lastName:"Meth", age:55, usCitizen:true},
{id:2, firstName:"Pablo", lastName:"Picasso", age:108, usCitizen:false}];
myDataSet.items = recData;
dataProvider:Array?/li>
dataProvider:Array 属性?/li>
![]()
![]()
![]()