这次再次与数据提供商合作。
我一直在使用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的新手,所以可能没有以正确的方式表达事情。
感谢任何帮助。感谢。
答案 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>
编辑数据提供者。谢谢