2012-05-11 48 views
-1

我想在其Change事件处理程序中显示ComboBox的值。将labelField是动态分配的,所以我不知道它是什么,当我运行的事件处理程序如何在ActionScript中获取组合框的值

cmbArea.labelField = qry.outFields[0]; 

我希望我能有机会获得将selectedItem像值:

protected function cmbArea_changeHandler(event:IndexChangeEvent):void{ 

     // TODO Auto-generated method stub 
     Alert.show(event.target.selectedItem.value); 
    } 

但它没有奏效。 任何帮助将不胜感激。

+0

您是否在使用Flex和Spark? –

+0

net.uk.sweet,是的。 ComboBox的定义如下:\t \t \t' Fred

+0

任何人都可以解释为什么我对这个问题有负面投票。我做错什么了吗?! – Fred

回答

0

我测试了以下行,似乎它作品:

Alert.show(event.target.selectedItem[event.target.labelField]); 
+0

嘿,弗雷德,你知道你可以接受你自己的答案吗?你会得到的点将超过掩盖那个投票:) –

+0

嗨伊恩,谢谢你的提示。我认为别人可能会觉得它有用并接受它。 – Fred

1

很难在没有看到数据提供者代码或错误消息的情况下进行调试。但是,labelField是动态分配的并不重要。如果数据提供者中的元素具有名为“value”的属性,那么您将拥有什么功能。如果您的数据提供唯一的财产是你指定为将labelField的人,你应该可以用下面的访问它在您更改处理:

Alert.show(ComboBox(event.target).selectedItem); 
+0

数据提供者是从GIS Web服务接收数据的ArrayCollection。它有多个属性,当我在事件过程中时,我不知道哪个属性被分配为labelField。如果代码不够清晰,我很抱歉。我正在使用示例代码从Web服务中获取数据,但我不太明白。无论如何,谢谢你的回复。它引导我选择正确的答案。 – Fred

0
<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 

      import spark.events.IndexChangeEvent; 

      protected function comboBox_changeHandler(event:IndexChangeEvent):void 
      { 
       Alert.show(comboBox.selectedItem); 
      } 
     ]]> 
    </fx:Script> 

    <s:ComboBox id="comboBox" 
       change="comboBox_changeHandler(event)"> 
     <s:dataProvider> 
      <s:ArrayList> 
       <fx:String>Item 1</fx:String> 
       <fx:String>Item 2</fx:String> 
       <fx:String>Item 3</fx:String> 
      </s:ArrayList> 
     </s:dataProvider> 
    </s:ComboBox> 

</s:Application>