Hey Alex,

Bug key is: SDK-12499

Thanks,
Marcio N.

--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> I finally found time to look into this.  I would like you to file a 
bug with your test case and send me the bug number.  I'm not sure we 
can actually fix this given the way XML change notification works, 
but we might be able to make it a little better.
> 
>  
> 
> The issue is that the collection is watching each node (<row>) tag, 
but you are actually editing the <evento> or <usario> tags which are 
not watched for changes and thus oldvalue/newvalue are not computed.  
In XML, an UPDATE event can mean that something changed in my child 
nodes.  We could add watching for the child nodes, but we may not 
want to due to memory and performance overhead.
> 
>  
> 
> The second update comes when the datagrid finishes editing.  I'm 
pretty sure that's a bug.  It should know that changes to XML are 
watched, but it doesn't think so and forces dispatching of another 
event.  There might be some case where a change needs forcing, but I 
won't know until we dig that far.
> 
>  
> 
> For now, unless you expect to change the nodes in other ways 
outside of the datagrid, get the itemEditEnd event and use it to 
check oldvalue/newvalue.
> 
>  
> 
> -Alex
> 
>  
> 
> ________________________________
> 
> From: [email protected] 
[mailto:[EMAIL PROTECTED] On Behalf Of Marcio Napoli
> Sent: Tuesday, August 28, 2007 12:19 PM
> To: [email protected]
> Subject: [flexcoders] Re: Help
> 
>  
> 
> Alex,
> 
> Its simple. Please, run the application in debug mode and change 
any 
> cell in DataGrid.
> 
> The event "changeData" is fired twice. None attribute has the old 
> value.
> 
> Thanks for you help!
> Marcio N.
> 
> --- In [email protected] <mailto:flexcoders%
40yahoogroups.com> , "Alex Harui" <aharui@> wrote:
> >
> > I'll try to take a look later. What are the steps to recreate the 
> problem?
> > 
> > 
> > 
> > ________________________________
> > 
> > From: [email protected] <mailto:flexcoders%
40yahoogroups.com>  
> [mailto:[email protected] <mailto:flexcoders%
40yahoogroups.com> ] On Behalf Of Marcio Napoli
> > Sent: Tuesday, August 28, 2007 10:33 AM
> > To: [email protected] <mailto:flexcoders%
40yahoogroups.com> 
> > Subject: [flexcoders] Re: Help
> > 
> > 
> > 
> > Hey Alex,
> > 
> > Here is the code.
> > 
> > Thanks,
> > Marcio N.
> > 
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml 
<http://www.adobe.com/2006/mxml>  
> <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> 
> " 
> > layout="absolute" creationComplete="myInitialize(event)">
> > <mx:Script>
> > <![CDATA[
> > import mx.collections.ICollectionView;
> > import mx.events.CollectionEventKind;
> > import mx.events.PropertyChangeEvent;
> > import mx.events.CollectionEvent;
> > 
> > [Bindable] private var DATAPACKET: XML = <dados>
> > <row>
> > <data>17/01/2007</data>
> > <evento>POSICIONAMENTO DE OS</evento>
> > <usuario>MARCOSA</usuario>
> > <consulta></consulta>
> > </row>
> > </dados>
> > 
> > public function myInitialize
> > (event:Event):void {
> > ((ICollectionView) 
> > (grid.dataProvider)).addEventListener
> > (CollectionEvent.COLLECTION_CHANGE, changeData);
> > }
> > 
> > public function changeData(event: 
> > CollectionEvent): void {
> > //Alert.show(event.items.toString());
> > //Alert.show(event.toString());
> > //trace(DATAPACKET);
> > //trace(event.items.length);
> > //trace(grid.selectedIndex);
> > trace(event.type);
> > trace(event.location); 
> > 
> > trace(event.oldLocation); 
> > 
> > 
> > trace('size 
> > = '+event.items.length);
> > 
> > if (event.items.length > 0) {
> > if (event.items[0] is 
> > PropertyChangeEvent) {
> > var pce: 
> > PropertyChangeEvent = event.items[0] as PropertyChangeEvent;
> > trace('type 
> > ='+pce.kind);
> > if (pce.kind == 
> > CollectionEventKind.UPDATE) {
> > trace
> > ('field = '+pce.property); // nome do campo
> > trace
> > ('source = '+pce.source); 
> > trace
> > ('target = '+pce.target); 
> > 
> > trace
> > ('value = '+pce.source[pce.property]); // linha
> > trace
> > ('oldvalue = '+pce.oldValue); 
> > 
> > trace
> > ('newValue = '+pce.newValue);
> > 
> > //DATAPACKET.dados.row.{pce.property} = pce.source
> > {pce.property};
> > //trace
> > (pce.source[pce.property]);
> > trace('grid 
> > index = '+grid.selectedIndex);
> > // trace
> > (DATAPACKET.row[grid.selectedIndex]);
> > }
> > //Alert.show
> > (PropertyChangeEvent(event.items[0]).newValue.toString());
> > }
> > }
> > //Alert.show(event.toString()); 
> > }
> > 
> > ]]>
> > </mx:Script>
> > <mx:DataGrid id="grid" editable="true" width="100%" 
> > height="100%" x="0" y="0" dataProvider="{DATAPACKET.row}" 
> > selectedIndex="0">
> > <mx:columns>
> > <mx:DataGridColumn width="100" 
> > headerText="Data" dataField="data"/>
> > <mx:DataGridColumn width="300" 
> > headerText="Evento" dataField="evento"/>
> > <mx:DataGridColumn width="100" 
> > headerText="Usuário" dataField="usuario"/>
> > <mx:DataGridColumn width="100" 
> > headerText="Consulta" dataField="consulta"/> 
> > 
> > </mx:columns>
> > </mx:DataGrid>
> > </mx:Application>
> > 
> > --- In [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> , "Alex Harui" <aharui@> wrote:
> > >
> > > Please post a sample app
> > > 
> > > 
> > > 
> > > ________________________________
> > > 
> > > 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 Marcio Napoli
> > > Sent: Tuesday, August 28, 2007 4:42 AM
> > > To: [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> 
> > > Subject: [flexcoders] Re: Help
> > > 
> > > 
> > > 
> > > Hey Alex,
> > > 
> > > I have tryed already! But in all scenarios the XML (DATAPACKET) 
> is 
> > > updated. So, i can't get the old values.
> > > 
> > > Thanks,
> > > Marcio
> > > 
> > > --- In [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> <mailto:flexcoders%
> > 40yahoogroups.com>
> > > , "Alex Harui" <aharui@> wrote:
> > > >
> > > > Try tracing using toXMLString().
> > > > 
> > > > ________________________________
> > > > 
> > > > From: [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> <mailto:flexcoders%
> > 40yahoogroups.com>
> > > 
> > > [mailto:[email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> <mailto:flexcoders%
> > 40yahoogroups.com>
> > > ] On
> > > > Behalf Of Marcio Napoli
> > > > Sent: Monday, August 27, 2007 11:36 AM
> > > > To: [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> <mailto:flexcoders%
> > 40yahoogroups.com> 
> > > > Subject: [flexcoders] Re: Help
> > > > 
> > > > 
> > > > 
> > > > 
> > > > Hey Alex,
> > > > 
> > > > As any change in DataGrid will modify my XML everything could 
> be 
> > > > changed in XML. However my XML has the following structure: 
> > > > "date", "event" and "user" and this nodes are DataGridColumn.
> > > > 
> > > > So when i change one cell in DataGrid the event "changeData" 
is 
> > > fired.
> > > > 
> > > > Could u help me ?
> > > > 
> > > > Thanks,
> > > > Marcio N.
> > > > 
> > > > --- In [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> 
> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders%
> > > 40yahoogroups.com>
> > > > , "Alex Harui" <aharui@> wrote:
> > > > >
> > > > > What did you change in the XML?
> > > > > 
> > > > > ________________________________
> > > > > 
> > > > > From: [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> 
> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders%
> > > 40yahoogroups.com>
> > > > 
> > > > [mailto:[email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> 
> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders%
> > > 40yahoogroups.com>
> > > > ] On
> > > > > Behalf Of Marcio Napoli
> > > > > Sent: Wednesday, August 22, 2007 7:00 AM
> > > > > To: [email protected] <mailto:flexcoders%
40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com> <mailto:flexcoders%
> > 40yahoogroups.com>
> > > <mailto:flexcoders%
> > > 40yahoogroups.com> 
> > > > > Subject: [flexcoders] Help
> > > > > 
> > > > > 
> > > > > 
> > > > > Hi All,
> > > > > 
> > > > > I am having problems with collection, when i change the 
value 
> > of 
> > > > one 
> > > > > registry to a new value i lost the old one. For example:
> > > > > 
> > > > > [Bindable] private var DATAPACKET: XML = <data> 
> > > > > <row>
> > > > > <date>17/01/2007</date>
> > > > > <event>Event 01</event>
> > > > > <user>MARCOSA</user>
> > > > > </row>
> > > > > </data>
> > > > > 
> > > > > ((ICollectionView) (grid.dataProvider)).addEventListener
> > > > > (CollectionEvent.COLLECTION_CHANGE, changeData);
> > > > > 
> > > > > public function changeData(event: CollectionEvent): void {
> > > > > if (event.items.length > 0) {
> > > > > if (event.items[0] as PropertyChangeEvent) {
> > > > > var pce: PropertyChangeEvent = event.items[0] as 
> > > > > PropertyChangeEvent;
> > > > > if (pce.kind == CollectionEventKind.UPDATE) {
> > > > > trace(pce.source); 
> > > > > trace
> > > > > (pce.target); 
> > > > > trace(pce.property); 
> > > > > trace
> > > > > (pce.oldValue); 
> > > > > trace(pce.newValue);
> > > > > trace(DATAPACKET.row[grid.selectedIndex]);
> > > > > }
> > > > > }
> > > > > }
> > > > > }
> > > > > 
> > > > > In my sample the attributes "pce.oldValue" 
and "pce.newValue" 
> > are 
> > > > > null.
> > > > > The "pce.source" is with new value and my var "datapacket" 
> > > already 
> > > > > updated.
> > > > > So, how can i get the old value?
> > > > > 
> > > > > Thanks,
> > > > > Marcio Napoli
> > > > > napoli@ <mailto:napoli%40stela.org.br>
> > > > >
> > > >
> > >
> >
>


Reply via email to