1

我有一个从调用中检索的 XML,因此所有值对于节点的标签都是动态的(所以我知道有一个我必须显示的 appname)。我在 ComboBox 中显示 appname,然后我需要从同一节点中的另一个标签获取另一个值,我的 xml 具有这样的结构

<root>
  <item>
    <name>Hello</name>
    <version>World</version>
  </item>
  <item>
    <name>See_you</name>
    <version>soon</version>
  </item>
</root>

现在,我有一个具有动态值的 flex mx:ComboBox,用户选择标签,例如 Hello,我需要找到相应的节点值和子值,这样我才能返回 World。

我可以通过dataProvider定义ComboBox的标签,这样就完成了。现在我无法通过 trace(event.currentTarget.selectedItem.@label); 获取所选值 (我在 ComboBox 上有更改处理程序)= 这是 1 个问题;

第二个问题是如果我在同一个父节点中有另一个节点值(在这种情况下),我如何从 xml 对象中获取节点值?

我被困在这个问题上,时间不多了,请帮忙。++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#

<mx:AddChild relativeTo="{VGroup}">
<mx:ComboBox id="AppListBox" change="AppListBox_changeHandler(Event.CHANGE)"/>
</mx:AddChild>

然后我提供数据,当我在我的脚本中有数据时,就像这样

AppListBox.dataProvider = appxml.item.appname.text();

appxml - 是那个 xml

然后我尝试获取所选项目的值,我尝试这样:

protected function AppListBox_changeHandler(event:Event):void
{
trace(event.currentTarget.selectedItem.label);
trace(event.currentTarget.selectedItem.data);
trace(event.currentTarget.selectedItem.@label);
trace(AppListBox.selectedItem.label);
trace(AppListBox.selectedItem.@label);
trace(AppListBox.selectedItem.name);

它不显示任何内容。甚至没有错误

4

1 回答 1

1

这一切对我来说都很好。

[Bindable]
public var myXML:XML

private function init( ):void{
  this.myXML = new XML(     
  <root>
    <item>
      <name>Hello</name>
      <version>World</version>
    </item>
    <item>
      <name>See_you</name>
      <version>soon</version>
    </item>
  </root>
  );
}

private function appListBox_changeHandler(event:Event):void{
  trace( 'index   --' + appListBox.selectedIndex )
  trace( 'label   --' + appListBox.selectedLabel )
  trace( 'version --' + XML(appListBox.selectedItem).version )
  trace( 'item    --' + appListBox.selectedItem )
}


<comboBox:ExtendedComboBox 
  id="appListBox"
  dataProvider="{this.myXML.item}"
  labelField="name"
  itemRenderer="mx.controls.Label"
  change="appListBox_changeHandler(event)"
/>
于 2012-07-21T07:25:44.080 回答