I'm with you now - sorry again for being slow.

I will give it a try.

Thanks again for all your help.

Chris

--- In [email protected], Alex Harui <aha...@...> wrote:
>
> For some XML:
> 
> <people>
>                 <person>
>                                 <firstName>Alex</firstName>
>                                 <lastName>Haruie</lastName>
>                 </person>
> ...
> 
> It would be faster to have a class:
> 
> Class Person
> {
>                 Public var firstName:String;
>                 Public var lastName:String;
> }
> 
> and loop through the XML once, making an array of Persons, and using 
> ArrayCollection instead of XMLListCollection and doing the sorting and 
> copying via toArray(). XML property access is orders of magnitude slower than 
> class instance property access and the number of accesses required in sorting 
> are significant.  This strategy will have the advantage of fully divesting 
> itself from the original XML.  XMLLists have some ties back to the original 
> XML and some manipulations might cause change notifications and maybe some of 
> the problems you're seeing.
> 
> Whenever you need the XML again, maybe when reporting back to the server, you 
> create the XML from the array of class instances.
> 
> Alex Harui
> Flex SDK Developer
> Adobe Systems Inc.<http://www.adobe.com/>
> Blog: http://blogs.adobe.com/aharui
> 
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of chris.cobb40
> Sent: Tuesday, April 07, 2009 9:31 AM
> To: [email protected]
> Subject: [flexcoders] Re: DataGrid Column Sort Prevents Drag From Updating 
> DataProvider
> 
> 
> I'm sorry I don't understand what you mean by that - could you explain a bit 
> more please.
> 
> Sorry for being thick and thanks again.
> 
> Chris
> 
> --- In [email protected]<mailto:flexcoders%40yahoogroups.com>, Alex 
> Harui <aharui@> wrote:
> >
> > It occurs to me that this might be easier and faster if you convert the XML 
> > to class instances and only go back to XML at the last minute. Try doing 
> > that.
> >
> > Alex Harui
> > Flex SDK Developer
> > Adobe Systems Inc.<http://www.adobe.com/>
> > Blog: http://blogs.adobe.com/aharui
> >
> > From: [email protected]<mailto:flexcoders%40yahoogroups.com> 
> > [mailto:[email protected]<mailto:flexcoders%40yahoogroups.com>] On 
> > Behalf Of chris.cobb40
> > Sent: Tuesday, April 07, 2009 1:55 AM
> > To: [email protected]<mailto:flexcoders%40yahoogroups.com>
> > Subject: [flexcoders] Re: DataGrid Column Sort Prevents Drag From Updating 
> > DataProvider
> >
> >
> > Hi Alex
> >
> > I gave it a try and I can see what you are getting at but I would be 
> > grateful for a bit more help.
> >
> > What I want to do is to -
> >
> > 1. Make copy of the XMLListCollection dataprovider in an array by using 
> > toArray();
> >
> > 2. Remove the sort for XMLListCollection dataprovider.
> >
> > 3. Copy the data back from the array into the XMLListCollection.
> >
> > I tried the following(InitiativeList is the XMLListCollection):
> >
> > var iniCopy:Array = InitiativeList.toArray();
> > var iniXMLCopy:XMLListCollection = new XMLListCollection();
> >
> > InitiativeList.sort = null;
> >
> > for (var i:int = 0; i < iniCopy.length; i++) {
> > iniXMLCopy.addItemAt(iniCopy[i],i);
> > }
> >
> > InitiativeList = new XMLListCollection(XMLList(iniXMLCopy.toXMLString()));
> >
> > InitiativeList.refresh();
> >
> > It sort of works but for some reason the first drag I do does not work but 
> > then subsequent ones do.
> >
> > Could you give me an idea of where I am going wrong - I guess there is a 
> > better way than the long winded method I have used anyway.
> >
> > Thanks a lot.
> >
> > Chris
> >
> > --- In 
> > [email protected]<mailto:flexcoders%40yahoogroups.com><mailto:flexcoders%40yahoogroups.com>,
> >  "chris.cobb40" <chris.cobb40@> wrote:
> > >
> > > Hi Alex
> > >
> > > Thanks for that - I understand what you meant in your reply to the other 
> > > guy now - just me being slow.
> > >
> > > I will give it a try.
> > >
> > > Chris
> > >
> > > --- In 
> > > [email protected]<mailto:flexcoders%40yahoogroups.com><mailto:flexcoders%40yahoogroups.com>,
> > >  Alex Harui <aharui@> wrote:
> > > >
> > > > A collection is either sorted or not, and if there is a sort, it won't 
> > > > let you re-order. One way to allow re-ordering is, after a Sort (and 
> > > > the CollectionEvent.REFRESH event), copy the sorted results into an 
> > > > unsorted collection using toArray on the sorted collection.
> > > >
> > > > Alex Harui
> > > > Flex SDK Developer
> > > > Adobe Systems Inc.<http://www.adobe.com/>
> > > > Blog: http://blogs.adobe.com/aharui
> > > >
> > > > From: 
> > > > [email protected]<mailto:flexcoders%40yahoogroups.com><mailto:flexcoders%40yahoogroups.com>
> > > >  
> > > > [mailto:[email protected]<mailto:flexcoders%40yahoogroups.com><mailto:flexcoders%40yahoogroups.com>]
> > > >  On Behalf Of chris.cobb40
> > > > Sent: Monday, April 06, 2009 10:23 AM
> > > > To: 
> > > > [email protected]<mailto:flexcoders%40yahoogroups.com><mailto:flexcoders%40yahoogroups.com>
> > > > Subject: [flexcoders] DataGrid Column Sort Prevents Drag From Updating 
> > > > DataProvider
> > > >
> > > >
> > > > Hi
> > > >
> > > > I think I've seen this commented on before on flexcoders so sorry for 
> > > > the duplication.
> > > >
> > > > In the reply the person who asked the question was told to turn off the 
> > > > Column Sort and that would do it but won't this reset the sort order 
> > > > back to default before allowing the drag ?
> > > >
> > > > I want to cater for the situation where the user might want to sort the 
> > > > DataGrid into reverse alphabetical order and then just drag the 
> > > > resulting first row to be the second one.
> > > >
> > > > Maybe I'm using the wrong method of turning off the column sort - I set 
> > > > the sort property of the ListColection DataProvider for the DataGrid to 
> > > > null and then refresh ?
> > > >
> > > > Any sugegstions please ?
> > > >
> > > > Thanks
> > > >
> > > > Chris
> > > >
> > >
> >
>


Reply via email to