Try setting dragMoveEnabled='true" for the tileList
http://livedocs.macromedia.com/flex/2/langref/mx/controls/listClasses/Li stBase.html dragMoveEnabled property dragMoveEnabled:Boolean <http://livedocs.macromedia.com/flex/2/langref/Boolean.html> [read-write] A flag that indicates whether items can be moved instead of just copied from the control as part of a drag-and-drop operation. If true, and the dragEnabled property is true, items can be moved. Often the data provider cannot or should not have items removed from it, so a MOVE operation should not be allowed during drag-and-drop. The default value is false. regards, peter ________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Rachel Maxim Sent: Tuesday, January 09, 2007 3:28 PM To: [email protected] Subject: Re: [flexcoders] Drag and Drop within TileList - why does my code copy instead of move? Hi Stephen I'm not gonna argue with you since you work for Adobe :) I did figure out shortly after posting that the DragManager.NONE line wasn't doing anything (I just didn't want to allow drag and drop in that case). As far as calling ShowFeedback for every item dragged, I don't see another way to check against each object in the items array. In my case I'm not allowing selection of multiples, so "items" is an 1-length array. Perhaps I'm copying code without really understanding it...do I not need to use Array for the data format? Sorry I'm such a noob at this, not much OO development experience here outside AS2! Rachel On 1/9/07, Stephen Gilson < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote: I did not run the code, but two things jump out at me. In your doDragEnter event, you have this: else { DragManager.NONE; } DragManager.NONE is a constant, and I'm not sure what you are trying to do. In doDragOver(), you are calling showFeedback() on every item dragged. I think you only need to call this once, based on whether you want to do a move or a copy. Hope that helps, Stephen ________________________________ From: [email protected] <mailto:[email protected]> [mailto:[email protected] <mailto:[email protected]> ] On Behalf Of Rachel Maxim Sent: Tuesday, January 09, 2007 12:49 PM To: [email protected] <mailto:[email protected]> Subject: [flexcoders] Drag and Drop within TileList - why does my code copy instead of move? Hello, I would really appreciate another set of eyes taking a look at this code to see what I'm doing wrong. I have several tile lists where tiles can be dragged and dropped around. This code is pretty much straight out of the docs plus a few rules, It's working fine except that the tiles are copying, not moving as I want them to. Before I overrode the default drag-and-drop functionality, they moved, but when I implemented my rules to ensure they are being dragged to a list that accepts them, they started copying. Thanks so much for any help! Rachel Maxim <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " verticalScrollPolicy="auto" horizontalScrollPolicy="off"> <!-- component properties to identify this item for drag and drop listeners --> <mx:String id="userName">{ data.userName}</mx:String> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.List; import mx.core.DragSource; import mx.events.DragEvent; import mx.managers.DragManager; import mx.containers.Tile; import mx.collections.IList; //drag enter handler private function doDragEnter(event:DragEvent):void { //drag target - where item is being dragged var dragInitiator:TileList = TileList(event.currentTarget); //dragged items var items:Array = event.dragSource.dataForFormat("items") as Array; for (var i:uint = 0; i < items.length; i ++) { var fromCaseName:String = items[i].caseName; //the case name that the deal is being dragged from var toCaseName:String = data.caseName; //the case name that the deal is being dragged too //check to ensure drop is allowed on this object if (isDropAllowed(fromCaseName, toCaseName)) { DragManager.acceptDragDrop(dragInitiator); } else { DragManager.NONE; } } } private function doDragOver(event:DragEvent):void { //dragged items var items:Array = event.dragSource.dataForFormat("items") as Array; for (var i:uint = 0; i < items.length; i ++) { var fromCaseName:String = items[i].caseName; //the case name that the deal is being dragged from var toCaseName:String = data.caseName; //the case name that the deal is being dragged too //check to ensure drop is allowed on this object if (isDropAllowed(fromCaseName, toCaseName)) { DragManager.showFeedback(DragManager.MOVE); } else { DragManager.showFeedback (DragManager.NONE); } } } //drop handler private function doDragDrop(event:DragEvent):void { //define the drop target var dropTarget:TileList = TileList(event.currentTarget); //dragged items var items:Array = event.dragSource.dataForFormat("items") as Array; //get the drop location in the destination var dropLoc:int = dropTarget.calculateDropIndex(event); //loop over dragged items to get data from each for (var i:uint = 0; i < items.length; i ++) { trace("The deal " + items[i].caseID + " " + items[i].companyName + " " + items[i].caseName + " was assigned to " + userName); //debugging trace //add to drop target IList(dropTarget.dataProvider).addItemAt(items[i], dropLoc); trace("the deal was dropped at " + dropTarget.dataProvider.getItemAt(dropLoc).caseName); } //once complete, dispatch the drag complete event var dragComplete:Event = new Event('dragComplete',true); this.dispatchEvent(dragComplete); } //business rules that determine if this object can be dropped on the intended target private function isDropAllowed(fromCaseName:String, toCaseName:String):Boolean { //if deal is being dragged to the same caseName, drop is allowed if (fromCaseName == toCaseName) { return true; } else { return false; } } ]]> </mx:Script> <mx:Label text="{data.userName}" top="5" left="5" id="lblCreditName" fontWeight="bold" width="231" textAlign="left"/> <mx:TileList dataProvider="{data.userDeals}" itemRenderer="DealButton" id="tlDeals" columnCount="2" verticalScrollPolicy="auto" horizontalScrollPolicy="off" rowCount="0" rowHeight="40" columnWidth="160" maxHeight="80" direction="horizontal" allowMultipleSelection="false" dragEnabled="true" dragEnter="doDragEnter(event);" dragOver="doDragOver(event);" dragDrop="doDragDrop(event);" paddingBottom="1" paddingTop="1" paddingLeft="1" paddingRight="1" left="0" top="25" right="0" bottom="0" styleName="deal" themeColor="#ffffff"/> </mx:Canvas>

