19.5.对一个XMLList或E4X查询进行绑定

19.5.1. 问题
如何将一个控件跟一个E4X 查询返回值进行绑定并存放到一个XML 对象里?
19.5.2. 解决方法
使用绑定标记“({})”去包装E4X 表达式,并设置控件的属性。
19.5.3. 讨论
举例说以下的XML 文件:
+展开
-ActionScript
[Bindable]
private var xmlItems:XML =
<CATALOG>
<PLANT id="2">
<COMMON>Bloodroot</COMMON>
<BOTANICAL>Sanguinaria canadensis</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.44</PRICE>
<AVAILABILITY>031599</AVAILABILITY>
</PLANT>
<PLANT id="3">
<COMMON>Columbine</COMMON>
<BOTANICAL>Aquilegia canadensis</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.37</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
<PLANT id="5">
<COMMON>Marsh Marigold</COMMON>
<BOTANICAL>Caltha palustris</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Sunny</LIGHT>
<PRICE>$6.81</PRICE>
<AVAILABILITY>051799</AVAILABILITY>
</PLANT
</CATALOG>

Label 控件的text 值可以设置为E4X 查询的结果, 用以返回id 为5 时其PLANT 的PRICE 值。
+展开
-XML
<mx:Label text="{xmlItems.PLANT.(@id == 5).PRICE}"/>

由于E4X 表达式的结果所返回的多个节点为一个XMLList, 该数值可以设置为ComboBox 的dataProvider。
+展开
-XML
<mx:ComboBox dataProvider="{xmlItems.PLANT.(ZONE == 4).PRICE}"/>

同样地, 当一个不带有子节点的E4X 表达式返回多个节点的时候, 整个节点会被返回, 可以用来设置DataGrid 控件的dataProvider, 就像如下:
+展开
-XML
<mx:DataGrid dataProvider="{xmlItems.PLANT.(ZONE == 4)}">
<mx:columns>
<mx:DataGridColumn dataField="COMMON"/>
<mx:DataGridColumn dataField="PRICE"/>
<mx:DataGridColumn dataField="AVAILABILITY"/>
<mx:DataGridColumn dataField="LIGHT"/>
</mx:columns>
</mx:DataGrid>

加支付宝好友偷能量挖...


评论(0)网络
阅读(75)喜欢(0)flash/flex/fcs/AIR