Mx:DataGrid's change event is for when selection changes, not when the
collection changes.  Could that be the issue?  collectionChange may be
what you want.

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Geoffrey
Sent: Friday, May 18, 2007 10:12 AM
To: [email protected]
Subject: [flexcoders] Re: Does Drag & Drop Only Update the DataProvider?

 

I don't have the code in front of me right now, but to be more precise,
dgEmployees is not 
broadcasting a change event upon a D&D action. I want dgEmployees to
broadcast an 
event every time there is a change to the DataGrid. The dgEmployees
DataGrid has a 
change event method defined, somthing like:

<code>
<mx:DataGrid id="dgEmployees"
dataProvider="{__employees}"
change="broadcastEvent(event)"
...>
</code>

The broadcastEvent() method constructs a custom event containing the
number of 
elements in the DataGrid, and then dispatches it to be used elsewhere.

Now, as I type this, I see that I might have keyed off the wrong event,
"change". Not sure if 
that is broadcast upon a change in the dataProvider, BUT I had been
working on this code 
previously (converting to Flex 2.0), and I believe that I saw this same
issue.

I noticed that when I used the debugger to step throught the
doDragDrop() method, I was 
seeing that only the dataProvider was being updated, and not the
ArrayCollection. I can't 
verify this until Monday (5/21), but I'm almost 100% sure this is what I
saw.

--- In [email protected] <mailto:flexcoders%40yahoogroups.com>
, "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> How do you know it didn't update __employees?
> 
> 
> 
> Can you post a mini-example in a couple of screenfuls of text?
> 
> 
> 
> ________________________________
> 
> From: [email protected] <mailto:flexcoders%40yahoogroups.com>
[mailto:[email protected] <mailto:flexcoders%40yahoogroups.com>
] On
> Behalf Of Geoffrey
> Sent: Thursday, May 17, 2007 6:11 PM
> To: [email protected] <mailto:flexcoders%40yahoogroups.com> 
> Subject: [flexcoders] Does Drag & Drop Only Update the DataProvider?
> 
> 
> 
> I have a DataGrid that has a dataProvider bound to an ArrayCollection.
> 
> <code>
> <mx:DataGrid id="dgEmployees"
> dataProvider="{__employees}"
> ...>
> </code>
> 
> I also have another DataGrid (dgAllEmployees) that is within a popup,
> which I use as a source for Drag & Drop operations to populate the
> dgEmployee dataGrid.
> 
> What I've noticed is that when I drag & drop employees from the "all
> employees" DataGrid to the "employees" DataGrid, it seems to only
> update the dataProvider of dgEmployees, and not the ArrayCollection
> __employees. Why is this?
> 
> Below is a snip of my drag & drop code where it actually copies the
> data. This is a generic method that is used all over the application.
> <code>
> public static function doDragDrop( event:DragEvent ):void
> {
> // Prevent the default event from happening.
> event.preventDefault();
> 
> // Get drop target
> var dropTarget:DataGrid = DataGrid(event.currentTarget);
> 
> // Get the dragged items from the drag initiator.
> var dropItems:Array = event.dragSource.dataForFormat("items") as
Array;
> 
> // Add each item to the drop target.
> for (var i:uint = 0; i < dropItems.length; i++)
> {
> var dest:IList = IList(dropTarget.dataProvider);
> if (!contains(dest, dropItems[i]))
> {
> dest.addItem(dropItems[i]);
> }
> }
> }
> </code>
> 
> I think that I had event.preventDefault(); in there because it was
> putting 2 of each dropped item in the dgEmployee DataGrid. Might this
> be messing something up?
> 
> Also, contains() is a custom method to compare the source items to
> what's in the target's list to prevent duplicates. Is there a better
> way to do this?
> 
> Thanks in advance.
> GT
>

 

Reply via email to