2009-09-25 5 views
1

데이터 공급자로 작업하면서 이번에도 다시 돌아 왔습니다.Combobox Dataprovider - 연관된 ID가 아닌 XML에서 labelField 만 가져옵니다.

글쎄, 나는 플렉스로 약간의 훈련을 해왔다. 나는 검색을했고, 나는 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에서 이제 OUPUT의 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의 ID를 ComboBox의 각 항목 NOME으로 가져옵니다.

Flex에 익숙하지 않아서 올바른 방식으로 표현하지 못했을 것입니다.

도움을 주시면 감사하겠습니다. 감사.

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

편집에

pais.data = "id"; 

변화 라벨 :

답변

2

이 선을 필요로하지 않는 코드는 데이터 공급자를 편집

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

단순화 할 수있다. 감사합니다

+0

나는 너무 맹인예요. 나는 .selectedItem, .selectedIndex ...로 모든 것을 시도했습니다. 결코 기억하지 못했습니다. 덕분에 친구. –

+0

감사합니다. 추신 : {XML (getPaises.lastResult) .pais}는이 방식으로 작동하지 않았습니다. {(getPaises.lastResult) .paises.pais}. 다시 한번 감사합니다. –

+0

그것을 반영하기 위해 게시물을 편집했습니다. – Amarghosh