学习笔记 如何连接Flex数据


  本文标签:Flex数据

  本文和大家重点讨论一下如何连接Flex数据,在Flex中,你可以使用几种方法去操纵和管理数据,它们大多数相关的内容已经超出了在这里进行简要介绍的范围  。

  连接Flex数据

  请记住在Flex应用程序中对数据的操作最重要的事情是:Flex应用程序并不直接与一个数据库进行连接  。因此,Adobe?FlexBuilder2没有提供直接连接数据的工具  。你可以通过使用MXML和ActionScript代码来操作和管理数据  。

  在Flex中,你可以使用几种方法去操纵和管理数据,它们大多数相关的内容已经超出了在这里进行简要介绍的范围(更多的信息,请查看后面的章节)  。不管怎样,请想象一种可以连接外部数据的方法,随后的例子将演示与XML结构的数据进行连接  。

  Flex数据的生成

  因为Flex应用程序并不直接与一个数据库进行连接,所以你需要使用某种类型的服务来支持对数据的使用  。在随后的例子中,将使用HTTPService组件从PHP所产生的一个XML文件中获取数据  。

  连接Flex数据库的第一步是生成将在Flex程序中使用到的数据  。在与PHP的应用中,你将采用如下的步骤:

  1.创建一个数据库(如MySQL)  。

  2.编写一个PHP脚本连接MySQL数据库并生成XML格式的数据  。
这些步骤同样适合于在其它工作平台上生成的数据(如ASP.NET、JSP等)  。

  连接外部数据源

  对于PHP所生成的XML格式数据,你可以使用HTTPService组件来请求获取数据,就象这样:

  1. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"> 
  2.  
  3. <mx:HTTPService 
  4. id="productsRequest" 
  5. url="http://www.somesite.com/products.php"/> 
  6. ...  
  7.  

  HTTPService组件定义了一个请求ID,你将使用这个ID来控制提供数据的URL或者服务器与数据之间的绑定  。

  外部Flex数据与数据驱动控制的绑定

  通过数据与数据驱动控制(data-drivencontrol)的绑定,你就可以处理HTTPService的结果(XML数据),就象这样:

  1. <mx:DataGridxmx:DataGridx="20"y="80"id="productGrid"width="400"  
  2. dataProvider="{productRequest.lastResult.products.items}"> 
  3. <mx:columns> 
  4. <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Name"dataField="name"/> 
  5. <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Price"dataField="price"/> 
  6. mx:columns> 
  7. mx:DataGrid> 
  8.  

  数据绑定的语法显示在数据控制的dataProvider属性中(在波浪形的括号里),它包含了HTTPService请求ID、lastResult方法、以及XML文件的数据结构  。在这个例子中,XML数据源的数据结构看起来就象这样:

  1. <XML> 
  2. <products> 
  3. <item> 
  4. <name>MobilePhonename> 
  5. <price>$199price> 
  6. item> 
  7. <item> 
  8. <name>CarChargername> 
  9. <price>$34price> 
  10. item> 
  11. ...  
  12.  

  通过设置dataField属性,项目数据(name和price)作为数据栅格中每一列的数据  。

  在运行时加载Flex数据

  你还可以在Flex程序开始运行时加载数据,就象随后所示,在HTTPService中向某个特定的URL发送一个请求:

  1. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"  
  2. creationComplete="productsRequest.send()"> 

  当你将creationComplete方法添加到应用程序标签里后,数据会在运行时进行加载并交于数据驱动控制(在这个例子中是数据栅格)  。
你还可以将HTTPService请求添加到一个控制事件上而不是程序里的标签中,就象如下所示:

  1. <mx:Buttonxmx:Buttonx="50"y="8"label="GetData"click="productsRequest.send();"/> 

  Flex提供许多方法去连接、管理、格式化、以及校验数据  。你可以通过使用远程程序调用、数据服务、或者其它企业级技术来操纵和管理数据  。