连接到数据——How Flex Works (二)

  • 译者:Balan
  • 英文原文:Connecting to data (from 'How Flex Works', Adobe Flex 2 Help)

在Flex应用中处理数据时要牢记:Flex应用不直接连接数据库。因而,Adobe® Flex Builder 2 并不提供直接连接数据的工具。数据交互采用MXML 和 ActionScript代码实现。

在Flex领域,有很多方式进行数据交互,其中绝大部分不是这些简洁说明能够说清楚的(更详细的信息可以参考正文下方的链接)。无论如何,为了阐明连接外部数据的一种方式,下面的这些例子介绍了如何连接XML格式化的数据。

生成数据

由于Flex应用不直接连接数据库,进行数据交互需要某些服务。接下来的例子中,使用Flex HTTPService 组件从XML文件(由PHP产生的)取得数据。

“连接到数据”的第一步便是生成在Flex应用中使用的数据,在PHP端,执行如下步骤:  

  • 如果还没有数据库,就创建一个(比如MySQL数据库)。
  • 书写PHP脚本,用来连接到MySQL数据库并产生XML格式化的数据。

提示  

关于如何使用PHP的详细信息和示范代码,参看“Flex 2和PHP的集成”——http://www.adobe.com/go/flex2_and_php .

这些步骤对于任何其他产生数据的工具都是有效的(ColdFusion, ASP.NET, JSP等)。

链接到外部数据源

对于PHP用用提供的XML格式化的数据,我们使用HTTPService组件来请求并取得数据:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    <mx:HTTPService 

    id="productsRequest" 

    url="http://www.somesite.com/products.php" />
 
    ...

HTTPService 组件定义了请求ID——用作绑定数据到数据引擎控制器,还定义了应用或服务的URL——提供数据的通道。

绑定外部数据到数据引擎控制器

通过绑定数据到数据引擎控制器处理HTTPService 结果(XML数据):

<mx:DataGrid x="20" y="80" id="productGrid" width="400"
    dataProvider="{productRequest.lastResult.products.items}" >   
    <mx:columns>
        <mx:DataGridColumn headerText="Name" dataField="name" />
        <mx:DataGridColumn headerText="Price" dataField="price" />
    </mx:columns>
</mx:DataGrid>

dataProvider 数据控制属性(包含在花括号内部)中的数据绑定语法由HTTPService请求ID、lastResult 方法以及XML文件的数据结构混合而成。本案中,XML数据源文件的数据格式如下所示:

<XML>
    <products>
        <item> 
            <name>Mobile Phone</name>
            <price>$199</price>
        </item>
        <item>
            <name>Car Charger</name>
            <price>$34</price>
        </item>
...

条目数据(名称和价格)通过dataField属性被绑定到数据网格中的字段(见上文)。

运行时加载数据

要在运行时加载数据,需要在Flex应用开始运行的时候发送请求到HTTPService中指定的URL通道:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="productsRequest.send()" >

将creationComplete方法添加到application标签,数据就会在运行时被加载并被填充到数据引擎控制器中(本案中的数据网格)。

也可以将HTTPService请求添加到控制事件中,而不是Application标签中:

<mx:Button x="50" y="8" label="Get Data" click="productsRequest.send();" />

Flex提供了很多方法来对数据进行连接、管理、格式化及验证。我们可以使用RPC(远程过程调用)、数据服务及其他企业级技术进行数据交互。

更深入的参考资料:

  • Retrieve and Display Data in Getting Started with Flex 2
  • Using Data Providers and Collections in Flex 2 Developer’s Guide
  • Using Data-Driven Controls in Flex 2 Developer’s Guide
  • Working with Data in Flex Builder in Using Flex Builder 2

你可能感兴趣的:(数据结构,PHP,Flex,企业应用,Adobe)