PDA

Volledige versie bekijken : amfphp / ArrayCollection probleem


Aurelio
%Europe/Berlin %774 %2009, 18:35
Hi,

Ik werk momenteel aan een project waarbij ik gebruik maak van RemoteObjects en amfphp.
De results van de RemoteObjects komen terug als ArrayCollection, en daar wil ik graag doorheen loopen om headers en bijpassende subheaders in een logische volgorde te plaatsen.

Het probleem dat ik heb hij in de loop niet de inhoud van de ArrayCollections ziet. Ik heb echter ook twee DataGrids geplaatst met de betreffende ArrayCollections als dataProvider, en daaruit blijkt dat de ArrayCollections wel degelijk de juiste informatie bevat.

Wat doe ik fout? En hoe zorg ik ervoor dat de juiste informatie uit de ArrayCollections kan worden getrokken?

Bij voorbaat dank!


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:comps="components.*" initialize="init()">

<mx:Script>
<![CDATA[
import mx.containers.VBox;
import flash.sampler.getInvocationCount;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;

[Bindable] private var headersAC:ArrayCollection = new ArrayCollection();
[Bindable] private var subheadersAC:ArrayCollection = new ArrayCollection();

private function init():void {
myService.getOperation("getHeaders").send();
myService.getOperation("getSubheaders").send();
}
private function headersHandler(event:ResultEvent):void {
headersAC = event.result as ArrayCollection;
}
private function subheadersHandler(event:ResultEvent):void {
subheadersAC = event.result as ArrayCollection;
fillAccordion();
}
private function faultHandler(event:FaultEvent):void {
Alert.show(event.fault.faultString, event.fault.faultCode);
trace(event.fault.faultString);
}
// fill up the Accordion
private function fillAccordion():void {
trace(headersAC.getItemAt(1).name as String);

for(var i:int=0; i<6; i++) {
trace(headersAC.getItemAt(i).name as String);

var vb:VBox = new VBox();
vb.label = headersAC.getItemAt(i).name as String;
vb.x = 200;
vb.y = 500;
vb.width = 300;
vb.height = 400;
navAcc.addChild(vb);
}
}

]]>
</mx:Script>

<mx:Style source="assets/css/main.css"/>

<mx:RemoteObject id="myService" endpoint="http://localhost/amfphp/gateway.php" source="reisgids.MainContentService" destination="amfphp"
fault="faultHandler(event)" showBusyCursor="true">
<mx:method name="getHeaders" result="headersHandler(event)"/>
<mx:method name="getSubheaders" result="subheadersHandler(event)"/>

</mx:RemoteObject>


<!-- *** bar bovenin *** -->
<mx:LinkButton label="uitloggen" left="70" top="20"/>
<mx:TextInput y="20" right="105" text="vul hier uw zoekterm in"/>
<mx:LinkButton y="20" label="zoek" right="50"/>

<!--Accordion -->
<mx:Accordion id="navAcc" width="240" y="73" backgroundColor="#CCC0CE"
paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10">
</mx:Accordion>


<mx:HDividedBox width="100%" height="100%" x="240" y="73">

<!--Main Content -->
<mx:VBox width="60%" height="100%" backgroundColor="#DDDDFF">
<mx:Label text="Header" fontWeight="bold"/>
<mx:Label text="subheader" fontWeight="bold"/>
<mx:Label text="pageTitle" fontWeight="bold"/>
<mx:Text text="Lorem Ipsum etc."/>


<!-- **** Test om te zien of gegevens goed uit de query komen!!! **** -->

<mx:DataGrid dataProvider="{headersAC}"/>
<mx:DataGrid dataProvider="{subheadersAC}" rowCount="{subheadersAC.length}"/>


</mx:VBox>

</mx:HDividedBox>

</mx:Application>

geco
%Europe/Berlin %394 %2009, 09:27
ik doe het zo! (in AS 3.0 wel te verstaan)

ik laad eerste mijn settings en leg connectie naar mijn database


private function LoadSetting():void {
var req:URLRequest = new URLRequest("assets/xml/settings.xml");
var ldr:URLLoader = new URLLoader();
ldr.addEventListener(Event.COMPLETE, settingsCompleteHandler);
ldr.load(req);
}

private function settingsCompleteHandler(event:Event):void {
var dataXML:XML = XML(event.target.data);
Settings.parseXMLdata(dataXML);
connectieLeggen();
}

private function connectieLeggen():void{
conn = new NetConnection();
conn.connect(Settings.serverPath);
}

zo haal ik er gegevens uit:


private function getWatJeWil():void{
var responder:Responder = new Responder(resultHandlerWatJeWil, faultHandler);
//projectService is de naam van mijn php file waar ik gegevens via sql uit mijn database haal
//getCountWatJeWil is de functie in mijn php file

conn.call("projectService.getCountWatJeWil", responder, HierKomtEenParameter);
}

private function resultHandlerWatJeWil(obj:Object):void{
for (var prop in obj.serverInfo.initialData){
var resultArray:Array = obj.serverInfo.initialData[prop];
var item:Object = new Object();
//id en naam zijn de gegevens die in mijn object zitten
item.id= resultArray[0];
item.naam= resultArray[1];
}
}


Hopelijk heb je er iets aan. Ben zelf nog niet zo goed in AS 3.0 dus sorry alst ni is wa je wil