Volledige versie bekijken : Q: dataGrid data to Array
-gL-
%Europe/Berlin %438 %2007, 10:31
Hey,
Ik zit met een datagrid waar ik rijen kan verschuiven(draggen) ten opzichte van elkaar.
Bij elke 'dragComplete' zou ik willen dat hij de data in die volgorde, die de datagrid op dat moment heeft, in een array steekt.
m.a.w
Hoe haal je dus data uit een datagrid om ze dan in een array te kunnen gebruiken.
Hopelijk verstaan jullie waar ik naartoe wil.
Alvast bedankt.
Thx
Groetjes
G
TheDutch
%Europe/Berlin %471 %2007, 11:19
Wil je dat het item altijd onderaan het DataGrid komt of begrijp ik je verkeerd? Graag wat meer uitleg.
-gL-
%Europe/Berlin %488 %2007, 11:43
Oei
Blijkbaar ben ik niet zo duidelijk.
Ik heb dus een dataGrid met een oplijsting van item. Via draggen kan ik de volgorde van de items wijzigen in de dataGrid. Op 'dragComplete' wil ik dat hij de items in die volgorde wegschrijft in een array om ze dan via amfphp te versturen naar de server.
Hopelijk is mijn probleem nu duidelijk :)
alvast bedankt,
Groetjes
G
TheDutch
%Europe/Berlin %774 %2007, 18:35
Hey gL, de DataProvider van een DataGrid is al een ArrayCollection die de items precies op dezelfde volgorde heeft als dat je ze in het DataGrid ziet. Je zou die dus naar AMFPHP kunnen sturen. Het komt dan binnen als een array met objecten. Elk object is dan een item uit het DataGrid :).
-gL-
%Europe/Berlin %802 %2007, 19:15
Aha, oké dat versta ik al.
Maar hoe doe je dat dan praktisch en wat is dan precies het verschil tussen een Array en een ArrayCollection? Wat kan de één 'meer' dan de 'andere'?
Alvast bedankt voor je antwoord.
Groetjes G
TheDutch
%Europe/Berlin %833 %2007, 20:00
Praktisch zie ik jou gewoon een kopie maken (mx.utils.ObjectUtil.copy()) van de DataProvider en die meesturen aan AMFPHP.
Een ArrayCollection is niets meer dan een wrapper class om een Array heen. Deze wrapper zorgt ervoor dat je meer methods tot je beschikking hebt waar je meer mee kunt en de Array perfect kunt laat samenwerken met de Flex 2 components (zie de LiveDocs voor alle details) :).
-gL-
%Europe/Berlin %888 %2007, 21:18
Aha, oké thx voor de info TheDutch! Ik bekijk je tips eens.
Alvast bedankt, :)
Groetjes
G
edit
ondertussen dit gevonden
link (http://www.cbetta.com/blog/index.cfm/2006/7/26/array-vs-array-collection-in-flex-2-with-a-coldfusion-slant)
-gL-
%Europe/Berlin %567 %2007, 13:37
Hey,
Kweet niet of het mogelijk is, maar zou je me nog wat op weg kunnen helpen. Ik weet zelf niet goed waar ik de mist in ga.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="initData();">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
public var dataArray: Array;
[Bindable]
public var arrayCol:ArrayCollection;
public function initData():void
{
dataArray = [];
dataArray.push( { id: 'Nummer 1', link: 'amazon.com' } );
dataArray.push( { id: 'Nummer 2', link: 'google.be' } );
dataArray.push( { id: 'Nummer 3', link: 'yahoo.com' } );
arrayCol = new ArrayCollection(dataArray);
}
public function dComplete(event:MouseEvent):void
{
var filter:Array = new Array();
for(var i:uint=1; i<dg.dataProvider.length; i++)
{
filter.push(arrayCol.getItemAt(i));
trace("plaats " + i + " " + arrayCol.getItemAt(i).id + " " + arrayCol.getItemAt(i).link)
}
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{arrayCol}"
id="dg" width="435"
dragEnabled="true" dropEnabled="true" dragMoveEnabled="true"
dragComplete="dComplete(event);" height="236">
<mx:columns>
<mx:DataGridColumn headerText="Id" dataField="id"/>
<mx:DataGridColumn headerText="Link" dataField="link"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
Alvast bedankt,
TheDutch
%Europe/Berlin %830 %2007, 19:55
Nou volgensmij heb ik je al voldoende op weg geholpen, toch? Je geeft gewoon als argument aan een functie van PHP mx.utils.ObjectUtil.copy(DataGrid.dataProvider) mee via AMFPHP. Dan krijg je binnen PHP een array terug met als elke array element een object waar de waarden in staan van de row uit het DataGrid.
Jouw code is niet zoals ik het heb voorgesteld :). Het is niet moeilijk. Gewoon een copy van de DataProvider property van je DataGrid meesturen als argument van een PHP functie (zoals ik net zei), thats it!
-gL-
%Europe/Berlin %941 %2007, 22:35
Oké cava, Alvast bedankt :)
Ik hou je op de hoogte!!
Groetjes
G
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.