2014-02-02 4 views
0

У меня возникли проблемы с заполнением combobox из ответа XML. Вот XML, который я получаю:Заполнение Flex ComboBox от XML от PHP

<distros> 
     <entry> 
     <distro>CentOS</distro> 
     <distro>Debian</distro> 
     <distro>Other</distro> 
     <distro>Sabayon</distro> 
     <distro>Ubuntu</distro> 
     <distro>VMware</distro> 
     <distro>Windows</distro> 
     </entry> 
    </distros> 

Так что, вероятно, самая простая форма XML когда-либо!

и вот гибкий код:

private function getDistros():void 
{ 
httpReq = new HTTPService; 
httpReq.url = 'http://myserver/xml.php'; 
httpReq.resultFormat = 'e4x'; 
httpReq.method = 'GET'; 
httpReq.addEventListener(ResultEvent.RESULT, popDistros); 
httpReq.send(null); 
} 

private function popDistros(event:ResultEvent):void 
{ 
if(event.result != "") 
{ 
    // Set the data to the XMLListCollection for lookup 
    myXmlCollection= new XMLListCollection(event.result.entry); 
    // Bind the ListCollection to the comboBox 
    Alert.show(myXmlCollection.toString()); 
    distroCombo.dataProvider = myXmlCollection.toString(); 

} 
} 

и MXML:

   <mx:ControlBar x="139" y="10" width="266" height="358" verticalAlign="top" horizontalAlign="left" direction="vertical"> 
        <mx:ComboBox id="distroCombo" labelField="distro"></mx:ComboBox> 
        <mx:ComboBox id="imageCombo"></mx:ComboBox> 
        <mx:Button label="Download"/> 
       </mx:ControlBar> 

XML-возвращается штраф в Алерт но COMBOBOX не заполнит, и я попытался это так теперь много разных способов, у кого есть какие-то предложения? Неужели я слишком долго смотрел на него?

ответ

1

, если результат (event.result) является XML, то он должен wotk как это: (она отличается .distro в конце концов по сравнению с вашими)

myXmlCollection = new XMLListCollection(event.result.entry.distro); 

... это должно создать достоверные данные в myXmlCollection

Но тогда и эта строка не так:

distroCombo.dataProvider = myXmlCollection.toString(); 

создает только один элемент в DataProvider типа строки (Just КСТАТИ: если бы вы использовали свечи выпадающий, вы бы га вы получите ошибку компиляции в этой строке). просто использовать вместо этого:

distroCombo.dataProvider = myXmlCollection; 

А также обратите внимание, что вы можете увидеть правильный результат в Алерт, но это не говорит, если данные имеют правильный тип, evertyhing сог оповещения преобразуется в строку :)

Смежные вопросы