我有一个看起来像这样的火花形式。我试图通过表单循环,并将每个DropDownList的id推送到一个数组中。在Flex中循环显示儿童4
我能够成功地跟踪表单项目的ID。但我无法使用任何用于访问儿童的方法来获取DropDownList的ID,而我使用的是Flex 3。我是新的Flex 4,经过一些阅读后,我明白其由于某些与火花结构有关的原因。
这是表格。
<s:Form id="facilities" x="51" y="32" width="595" height="402">
<s:FormHeading label="SWOT ANALYSIS FORMAT FOR PLOT PURCHASE" fontSize="15">
</s:FormHeading>
<s:FormItem id = "petrolPumpsFormItem" required="true" width="464" label="Petrol Pumps:">
<s:DropDownList id = "petrolPumps" width="220" prompt="Select distance from the plot" labelField="distance" >
<s:dataProvider>
<s:ArrayCollection>
<fx:Object distance="1-3 km" mark="100"/>
<fx:Object distance="3-6 km" mark="90"/>
<fx:Object distance="6-9 km" mark="80"/>
<fx:Object distance="9-12 km" mark="70"/>
<fx:Object distance="12-15 km" mark="60"/>
<fx:Object distance="15-18 km" mark="50"/>
</s:ArrayCollection>
</s:dataProvider>
</s:DropDownList>
</s:FormItem>
<s:FormItem id="filmTheatreFormItem" required="true" width="464" label="Film Theatre:">
<s:DropDownList id="filmTheatre" width="220" prompt="Select distance from the plot" labelField="distance" >
<s:dataProvider>
<s:ArrayCollection>
<fx:Object distance="1-3 km" mark="100"/>
<fx:Object distance="3-6 km" mark="90"/>
<fx:Object distance="6-9 km" mark="80"/>
<fx:Object distance="9-12 km" mark="70"/>
<fx:Object distance="12-15 km" mark="60"/>
<fx:Object distance="15-18 km" mark="50"/>
</s:ArrayCollection>
</s:dataProvider>
</s:DropDownList>
</s:FormItem>
<s:FormItem id= "atmFormItem" required="true" width="464" label="ATM:">
<s:DropDownList id= "atm" width="220" prompt="Select distance from the plot" labelField="distance" >
<s:dataProvider>
<s:ArrayCollection>
<fx:Object distance="1-3 km" mark="100"/>
<fx:Object distance="3-6 km" mark="90"/>
<fx:Object distance="6-9 km" mark="80"/>
<fx:Object distance="9-12 km" mark="70"/>
<fx:Object distance="12-15 km" mark="60"/>
<fx:Object distance="15-18 km" mark="50"/>
</s:ArrayCollection>
</s:dataProvider>
</s:DropDownList>
</s:FormItem>
</s:Form>
我可以像这样获得对Form的支持。 '设施'是表单的名称。
for (var i:int = 0 ;i <= facilities.numElements-1;i++)
{
var item:IVisualElementContainer = facilities.getElementAt(i) as IVisualElementContainer;
trace(item);
}
我试过这个链接http://www.igorcosta.org/?p=366并试图使用那里给出的类。
问题是发生错误。 Flash Builder将我带到代码中第二个函数的第二个循环中,并显示那里使用的item.numElements正在创建问题。我试图在我的代码中使用item.numElements(上面显示的那个符合FormItem标识的代码),它也不起作用。任何人都有任何线索?
我在这里收到混合信号。你是什么意思numElements“不工作”你有编译器错误?还是运行时错误?什么是错误?在你的循环中,你不能将你的项目保存到一个ArrayCollection中,作为DropDownList的dataProvider的来源吗? – JeffryHouser
您是否阅读了Igor Costa对该文章的评论?我非常赞同第一个(由Badu):将表单项值绑定到模型对象并处理该模型对象。 IMO在一个企业级的Flex应用程序中,你永远不应该通过循环视觉元素来访问数据。 – RIAstar
当我把痕迹(item.numElements);在我的循环中,我得到这个错误。 TypeError:错误#1009:无法访问空对象引用的属性或方法。 –