Pete Wall
Pete Wall

Reputation: 55

Populate Flex ComboBox from XML from PHP

I'm having trouble populating a combobox from an XML response. Here is the XML that I am receiving:

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

So probably the most basic form of XML ever!

and here is the flex code:

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();

}
}

and the 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>

The XML comes back fine in the Alert but the comboBox won't populate and I have tried this so many different ways now, anyone got any suggestions? Have I just been staring at it far too long?

Upvotes: 0

Views: 427

Answers (1)

user3190916
user3190916

Reputation: 747

if the result (event.result) is XML, then It should wotk like this: (it differs with .distro in the end compared to yours)

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

...this should create valid data in myXmlCollection

But then also this row is wrong:

distroCombo.dataProvider = myXmlCollection.toString();

it creates just one item in dataProvider of type string, (Just BTW: if you would have used spark combobox, you would have get compile error at this row). just use this instead:

distroCombo.dataProvider = myXmlCollection;

And also note, that you can see correct result in the Alert, but it does not say if the data are of correct type, coz Alert evertyhing converts to string :)

Upvotes: 1

Related Questions