I found the problem. I needed to be doing my refresh on the dragComplete event. It appears that until drag complete the last added element in the datagrid is not set in the arrayCollection.
--- In [email protected], "Mark Forsberg" <[EMAIL PROTECTED]> wrote: > > I am attempting to allow a user to drag a document to > a "favorites" grid. Upon the drag and drop I want to save all of the > grid items currently in the grid back to a database. I'm not having > any luck at all. > The drop works fine, but saving the grid information to the > database and subsequent refresh has been a problem. > Could someone point me in the right direction? Thanks. > > Here is the code that I'm currently trying: > > private function doDragDrop(event:DragEvent):void > { > var dropTarget:DataGrid = DataGrid > (event.currentTarget); > var dataInfo:ArrayCollection = > dropTarget.dataProvider as ArrayCollection; > var items:Array = event.dragSource.dataForFormat > ("items") as Array; > > var drop:Boolean = true; > > if(dropInitiator != dropTarget.id){ > > for(var i:int = 0; i < dataInfo.length; i++){ > if(dataInfo[i].doc_dis_name == items > [0].doc_dis_name) drop = false; > } > > if(String(drop) == 'true'){ > DragManager.showFeedback(DragManager.COPY); > DragManager.acceptDragDrop(dropTarget); > > > //set array.source to clear array from last > dragdrop > > myACCopy.source = new Array(); > > //make copy of arrayCollection for reloading > for each (var obj:Object in favorites){ > myACCopy.addItem(obj); > } > > //now delete favorites currently in database > values.deleteAllFavorites(dsn,userKey); > reload(); > } else{ > event.preventDefault(); > } > } > } > > public function reload():void{ > //Load values from created Array into DB > for(var x:int = 0;x<myACCopy.length;x++){ > var tempDoc_key:int = myACCopy[x]['doc_key']; > values.saveFavorite(dsn,userKey,tempDoc_key); > } > values.getFavorites(dsn,userKey); > } >

