1

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

好吧,我一直在使用 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>)。


我现在是因为我放置了一个可绑定到 ComboBox.selectedIndex 的标签

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

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

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

任何帮助表示赞赏。谢谢。

4

1 回答 1

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>

编辑了数据提供者。谢谢

于 2009-09-25T12:04:58.403 回答