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}"/>

また、Webで見た例によれば、これを使用したこともわかりますが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 に答える