Combobox Dataprovider - 仅从XML获取labelField而不是关联的ID

时间:2009-09-25 11:08:30

标签: flex flex3 combobox dataprovider xmldataprovider

这次再次与数据提供商合作。

我一直在使用Flex进行一些培训,并且我已经搜索过了,并且设法通过XML数据填充了一个ComboBox。它的工作非常好,他从XML获取每个项目的LabelField,但是他从XML中获得的每个项目的ID都没有。

代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="355" height="465" creationComplete="getPaises.send();"
xmlns:ns1="com.*" title="Perfil" fontWeight="normal">

<mx:HTTPService id="getPaises" url="com-handler/paises.php" result="paisesHandler()"/>

    <mx:Script>
        <![CDATA[
            private function paisesHandler():void
            {   
                pais.dataProvider = getPaises.lastResult.paises.pais;
                pais.data = "id";
                pais.labelField = "nome";

            }
       ]]>

    </mx:Script>

<mx:ComboBox x="121" y="328" width="200" id="pais">
</mx:ComboBox>

</mx:TitleWindow>

现在来自PHP的输出XML:

<?xml version="1.0" encoding="utf-8"?>
<paises>

    <pais>
        <id>1</id>
        <nome>Portugal</nome>
    </pais>

    <pais>
        <id>2</id>

        <nome>Espanha</nome>
    </pais>

</paises

这就是它发生的事情,我确实从XML获取了国家名称 (<nome></nome>)但他没有放置相关的ID(<id</id>)。


我现在因为我将一个Label绑定到ComboBox.selectedIndex

<mx:Label x="121" y="403" text="{pais.selectedIndex}"/>

正如您还看到我使用pais.data = "id";根据我在网络上看到的示例,它应该包含从XML到ComboBox中每个项目NOME的ID。

我是Flex的新手,所以可能没有以正确的方式表达事情。

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

您不需要这一行:

pais.data = "id";

将标签更改为

<mx:Label x="121" y="403" text="{pais.selectedItem.id}"/>

编辑:代码可以简化为

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
  width="355" height="465" creationComplete="getPaises.send();"
  xmlns:ns1="com.*" title="Perfil" fontWeight="normal">

  <mx:HTTPService id="getPaises" url="com-handler/paises.php" resultFormat="e4x"/>

  <mx:ComboBox x="121" y="328" width="200" id="pais" labelField="nome" 
    dataProvider="{XML(getPaises.lastResult).pais}"/>
</mx:TitleWindow>

编辑数据提供者。谢谢