在Flex应用中处理数据时要牢记:Flex应用不直接连接数据库。因而,Adobe® Flex Builder 2 并不提供直接连接数据的工具。数据交互采用MXML 和 ActionScript代码实现。
在Flex领域,有很多方式进行数据交互,其中绝大部分不是这些简洁说明能够说清楚的(更详细的信息可以参考正文下方的链接)。无论如何,为了阐明连接外部数据的一种方式,下面的这些例子介绍了如何连接XML格式化的数据。
由于Flex应用不直接连接数据库,进行数据交互需要某些服务。接下来的例子中,使用Flex HTTPService 组件从XML文件(由PHP产生的)取得数据。
“连接到数据”的第一步便是生成在Flex应用中使用的数据,在PHP端,执行如下步骤:
提示
关于如何使用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(远程过程调用)、数据服务及其他企业级技术进行数据交互。
更深入的参考资料: