首页 > 开发 > Xml > 正文

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

2023-07-12 18:51:53
字体:
来源:转载
供稿:网友
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>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表