2009-09-25 4 views
1

De retour cette fois en travaillant avec des fournisseurs de données.Combobox Dataprovider - Obtient labelField uniquement à partir de XML et non l'ID associé

Eh bien, je faisais un peu de formation avec Flex, et j'ai cherché, et j'ai réussi à obtenir un ComboBox peuplé de données XML. Cela fonctionne plutôt bien, il obtient le LabelField pour chaque élément de XML, mais l'ID associé à chaque élément qu'il n'a pas alors du XML.

code:

<?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> 

Et maintenant, le XML ouput de PHP:

<?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 

Eh bien, c'est ce qu'il se passe, je n'obtient les noms de pays du XML (<nome></nome>) mais il ne place pas l'ID associé (<id</id>).


je maintenant que parce que je posai une étiquette bindable au ComboBox.selectedIndex

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

Et comme vous le voyez aussi je l'ai utilisé pais.data = "id"; que, selon les exemples que j'ai vu dans le web, il devrait inclure les ID de XML à chaque élément NOME dans le ComboBox.

Je suis nouveau à Flex, donc probablement n'a pas exprimé les choses de la bonne façon.

Toute aide est appréciée. Merci.

Répondre

2

Vous n'avez pas besoin de cette ligne:

pais.data = "id"; 

changer l'étiquette

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

EDIT: Le code peut être simplifié à

<?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> 

Edité le fournisseur de données. Merci

+0

Je suis tellement aveugle .. J'ai essayé tout avec .selectedItem, .selectedIndex ... Jamais rappelé de cela: S. Merci mon ami. –

+0

Merci plus simple. PS: {XML (getPaises.lastResult) .pais} ne fonctionnait pas cela fonctionnait de cette façon: {(getPaises.lastResult) .paises.pais}. Encore merci. –

+0

a édité le message pour le refléter :) – Amarghosh

Questions connexes