Hmm, very strange. I wonder if it is because my list box is being created by a repeater. Or becaue drag is enabled on it? here's my code...
<?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:ppcView="com.ppc.stickies.view.*" width="720" height="590" backgroundColor="#666666" cornerRadius="24" marginBottom="8" marginTop="8" marginLeft="8" marginRight="8"> <ppcView:ProjectAssignmentsViewHelper name="projectAssignmentsViewHelper" view="{ this }" /> <!-- ============================================================================================ --> <mx:Script> <![CDATA[ import com.iterationtwo.cairngorm.view.ViewLocator; import com.iterationtwo.cairngorm.control.EventBroadcaster; import mx.managers.DragManager; import mx.core.DragSource; //----------------------------------------------------------------------------------- //Page variables var oPersonnel:Object; var aProjects : Array = new Array(); var numPersonnelID : String; //----------------------------------------------------------------------------------- //Drag and Drop Functions private function doDragEnter(event) { event.handled="true"; } //------------------------------------- private function doDragExit(event) { event.target.hideDropFeedback(); } //------------------------------------- private function doDragOver(event) { event.target.showDropFeedback(); if (Key.isDown(Key.CONTROL)) event.action = DragManager.COPY; else event.action = DragManager.MOVE; } //------------------------------------- private function doDragDrop(event) { doDragExit(event); var items = event.dragSource.dataForFormat("items"); var dest = event.target; var dropLoc = dest.getDropLocation() var itemExists:String = "0"; if (dropLoc.id == trash){ mx.core.Application.alert('TRASH'); } //mx.core.Application.alert(event.target.dataProvider[0].TXTPROJECTNAME +' '+ items.length ); items.reverse() for(var i = 0; i < items.length; i++) { //This code checks if the item already exists in the list before adding. //And checks to see if the drag is coming from the project list. If the intitiator is //the same as the drop target, then we are just sorting. for(var j = 0; j < event.target.dataProvider.length; j++){ if(event.target.dataProvider[j].NUMPROJECTID == items[i].NUMPROJECTID && event.dragSource._data.source.__id != event.target.id){ //if the dragged item exists in the drop list AND the item is being dragged from the project list, then item exists itemExists = "1" } } if(itemExists == "0"){ dest.addItemAt(dropLoc, items[i]); }else{ itemExists = "0"; //reset } } //any time an item is added to a list or the sort order has changed, update the record in the DB //doUpdateTarget(event); //reset the projects array to the current project list aProjects = new Array();//clear out the array each time for(var i = 0; i < event.target.dataProvider.length; i++){ aProjects.push(event.target.dataProvider[i].NUMPROJECTID) } //resest the personnelID to the current list's owner numPersonnelID = event.target._parent.dataProvider.NUMPERSONNELID //and then update that list owner's record EventBroadcaster.getInstance().broadcastEvent("assignmentsUpdate"); } //------------------------------------- private function doDragDelete(event) { doDragExit(event); var items = event.dragSource.dataForFormat("items"); var dest = event.target; var dropLoc = dest.getDropLocation(); var sourceProvider = event.dragSource._data.source.dataProvider; //mx.core.Application.alert(event.target.id); //mx.core.Application.alert('TRASH'); //mx.core.Application.alert(event.target.dataProvider[0].TXTPROJECTNAME +' '+ items.length ); //any time an item is added to a list or the sort order has changed, update the record in the DB //doUpdateInitiator(event); //reset the projects array to the current project list MINUS THE ITEM BEING DELETED aProjects = new Array();//clear out the array each time //mx.core.Application.alert("source: "+sourceProvider[i].NUMPROJECTID +"item: "+items[i].NUMPROJECTID); for(var i = 0; i <sourceProvider.length; i++){ for(var n = 0; n < items.length; n++){ if(sourceProvider[i].NUMPROJECTID != items[n].NUMPROJECTID){ aProjects.push(sourceProvider[i].NUMPROJECTID) } } } //resest the personnelID to the current list's owner numPersonnelID = event.dragSource._data.source._parent.dataProvider.NUMPERSONNELID //and then update that list owner's record EventBroadcaster.getInstance().broadcastEvent("assignmentsUpdate"); } //------------------------------------- private function doDragComplete(event) { doDragExit(event); var src = event.target; if (event.action == DragManager.MOVE) { var items = src.selectedIndices; items.sort(sortByNumber) // If user selects the listitems in random order, we first sort the array to have all the items in order items.reverse() // then we reverse the array. In list when any item is removed, it decreases the index of the items below it. // so we remove the bottom most item first. var s=""; for(var i = 0; i < items.length; i++) { s=s+items[i]+" : "; } for(var i = 0; i < items.length; i++) { src.removeItemAt(items[i]) } } } //------------------------------------- private function sortByNumber(a, b) { return (a > b); } //----------------------------------------------------------------------------------- private function getAllAssignments(){ EventBroadcaster.getInstance().broadcastEvent("assignmentsGet",{ targetViewHelperName: 'projectAssignmentsViewHelper'});} //----------------------------------------------------------------------------------- private function doUpdateTarget(event){ //reset the projects array to the current project list aProjects = new Array();//clear out the array each time for(var i = 0; i < event.target.dataProvider.length; i++){ aProjects.push(event.target.dataProvider[i].NUMPROJECTID) } //resest the personnelID to the current list's owner numPersonnelID = event.target._parent.dataProvider.NUMPERSONNELID //and then update that list owner's record EventBroadcaster.getInstance().broadcastEvent("assignmentsUpdate"); } //----------------------------------------------------------------------------------- private function doUpdateInitiator(event){ //reset the projects array to the current project list aProjects = new Array();//clear out the array each time for(var i = 0; i < event.dragSource._data.source.dataProvider.length; i++){ aProjects.push(event.dragSource._data.source.dataProvider[i].NUMPROJECTID) } //resest the personnelID to the current list's owner numPersonnelID = event.dragSource._data.source._parent.dataProvider.NUMPERSONNELID //and then update that list owner's record EventBroadcaster.getInstance().broadcastEvent("assignmentsUpdate"); } private function temp(){ //used for testing mx.core.Application.alert('itemrolled over'); } //----------------------------------------------------------------------------------- ]]> </mx:Script> <!-- ============================================================================================ --> <mx:Tile id="personnelTile" direction="horizontal" width="100%" height="100%"> <mx:Repeater id="personnelRepeater" startingIndex="0"> <mx:Panel id="personnelPanel"> <mx:List id="personnelList" width="150" dragEnabled="true" labelField="TXTPROJECTNAME" itemRollOver="temp()" dragEnter="doDragEnter(event)" dragExit="doDragExit(event);" dragOver="doDragOver(event);" dragDrop="doDragDrop(event);" dragComplete="doDragComplete(event);" /> <mx:Box id="trash" width="100%" horizontalAlign="right" dragEnter="doDragEnter(event)" dragExit="doDragExit(event);" dragOver="doDragOver(event);" dragDrop="doDragDelete(event);" > <mx:Image source="media\TRASHCAN.jpg" /> </mx:Box> </mx:Panel> </mx:Repeater> </mx:Tile> </mx:VBox> ------------------------ Yahoo! Groups Sponsor --------------------~--> Fair play? Video games influencing politics. Click and talk back! http://us.click.yahoo.com/u8TY5A/tzNLAA/yQLSAA/nhFolB/TM --------------------------------------------------------------------~-> -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/