PDA

Volledige versie bekijken : Flex ComboBoxen en XML


duivvv
%Europe/Berlin %677 %2006, 16:15
hey

ben relatief nieuw met Flex
m'n vraag is nu

hoe vul je het best een combobox met XML op in Flex ?

en nog een klein vraagje ?
wat is de beste manier om Flex en MySQL samen te laten werken ?
een select zou nog lukken denk ik (via HTTPService), maar hoe doe je dan updates of insert query's ?

groeten !

TrueChaoZ
%Europe/Berlin %760 %2006, 18:15
hey

ben relatief nieuw met Flex
m'n vraag is nu

hoe vul je het best een combobox met XML op in Flex ?Waarschijnlijk is een XMLList of XMLCollection het makkelijkst, dus ik raad je aan om daar in ieder geval naar te gaan kijken.

en nog een klein vraagje ?
wat is de beste manier om Flex en MySQL samen te laten werken ?
een select zou nog lukken denk ik (via HTTPService), maar hoe doe je dan updates of insert query's ?

groeten !Sowieso geen database verbinding in Flex zonder backend, oftewel je hebt een server-side scripting server nodig zoals ColdFusion, Java(EJB/JSP/etc), PHP, ASP(.NET), etc. Via die server-side scripting kan je dan verbinding maken met MySQL (dit is voor elke application server weer net ff anders), waarna Flex verbinding maakt met de backend om de database aan te spreken.

duivvv
%Europe/Berlin %584 %2006, 14:01
hmm ok

ik doe het volgende

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
height="100%" width="100%" creationComplete="usersFeed.send();laadBox()">

de usersFeed ziet er als volgt uit

<mx:HTTPService url="data/users.xml" id="usersFeed"/>

en m'n functie laadBox zo

public function laadBox():void{
var lijst:XMLList = usersFeed.lastResult.users.user
var item:XML
for each(item in lijst) {
var tempOBJ:Object = new Object()
tempOBJ.label = item.naam + " " + item.voornaam
users.push(tempOBJ)
}
}

m'n combobox heeft als dataProvider

dataProvider="{users}"

in m'n actionscript staat m'n array gedefiniëerd als

[Bindable]
public var users:Array = new Array()

en m'n XML ziet er als volgt uit


<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
<naam>Dirk</naam>
<voornaam>De Mets</voornaam>
</user>
<user>
<naam>Ludo</naam>
<voornaam>De Keyser</voornaam>
</user>
<user>
<naam>Jan</naam>
<voornaam>Pieters</voornaam>
</user>
<user>
<naam>Ludo</naam>
<voornaam>Zanens</voornaam>
</user>
</users>

maar ik krijg volgende error ...

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at test/laadBox()
at test/___Application1_creationComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunctio n()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/set initialized()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/::callLaterDispatcher2()
at mx.core::UIComponent/::callLaterDispatcher()

iemand ...

dioneo
%Europe/Berlin %601 %2006, 14:26
Je kunt je combo ook gelijk een dataprovider meegeven, en wel de XML die je nog op moet halen. je functie laadBox() kan dan in principe weg. krijg je ook niet het probleem (zoals nu) dat je een XML verwerkt die je nog niet binnen hebt

<mx:DataGrid id="usersGrid" width="400" dataProvider="{usersFeed.lastResult.users.user}" >
<mx:columns>
<mx:DataGridColumn headerText="voornaam" dataField="voornaam"/>
<mx:DataGridColumn headerText="naam" dataField="naam"/>
</mx:columns>
</mx:DataGrid>

duivvv
%Europe/Berlin %625 %2006, 15:00
wow

dat is wel heel gemakkelijk ...

public function plakstring(item:Object):String{
var naam:String = item.voornaam + " " + item.naam
return naam
}

<mx:HTTPService url="data/users.xml" id="usersFeed"/>
<mx:ComboBox id="combobox" dataProvider="{usersFeed.lastResult.users.user}" labelFunction="plakstring" initialize="usersFeed.send()" />

lang leve Flex !!! :D

TrueChaoZ
%Europe/Berlin %749 %2006, 17:58
Dat horen we graag :D

Even nog een sidenote:
public function plakstring(item:Object):String{
var naam:String = item.voornaam + " " + item.naam
return naam
}Ik zie dat je hier geen ; (puntkomma's) gebruikt aan het einde van je codelines, in AS is dat een goede gewoonte om dat wel te doen (ik wist niet eens dat het zonder ; door de AS3 compiler heen kwam :P). Dus een tipje, gebruik AS goed en dus met ; aan het einde van elke code regel.

duivvv
%Europe/Berlin %474 %2006, 11:23
hehe :)
ja ben van nature een nogal verwende actionscripter

kben op een manier wel blij dat het allemaal wat strikter is geworden, maakt alles veel gemakkelijker te begrijpen.

TrueChaoZ
%Europe/Berlin %508 %2006, 12:12
hehe :)
ja ben van nature een nogal verwende actionscripter

kben op een manier wel blij dat het allemaal wat strikter is geworden, maakt alles veel gemakkelijker te begrijpen.Ja sommige zullen er wel erg last van gaan krijgen, maar zolang de errors dan maar duidelijk zijn (en dat zijn ze aardig, kan beter, maar het is al stukken beter dan in Flash 8/Flex Builder 1) dan is het geen probleem en leer je het jezelf ook vrij snel aan :)