If you create two buttons, ‘itemUpBtn’ and ‘itemDownBtn’, and a datagrid of name ‘itemGrid’, with a column of ID’s in it, you can move items up and down using this code. Fairly user friendly, as it re-selects the moved item once it’s moved (just relies on that ID column to move them around).
Below is the mouseclick handler function.
private function clickHandler(e:MouseEvent):void { switch (e.target) { case itemUpBtn: if (itemGrid.selectedItem) { if(itemGrid.selectedItem.ID != 0) { var currentItem:Object = itemGrid.selectedItem; var replaced:Object = itemGrid.replaceItemAt(currentItem, currentItem.ID - 1); itemGrid.selectedItem = itemGrid.getItemAt(currentItem.ID - 1); itemGrid.replaceItemAt(replaced, currentItem.ID); updateIDs(itemGrid); } } break; case itemDownBtn: if (itemGrid.selectedItem) { if(itemGrid.selectedItem.ID != itemGrid.rowCount-1) { currentItem = itemGrid.selectedItem; replaced = itemGrid.replaceItemAt(currentItem, currentItem.ID + 1); itemGrid.replaceItemAt(replaced, currentItem.ID); itemGrid.selectedItem = itemGrid.getItemAt(currentItem.ID + 1); updateIDs(itemGrid); } } break;
You’ve also got to slap this wee function in too somewhere, it just re-jigs the ID’s to be accurate line references after they’ve moved, so they can move again.
private function updateIDs(targetGrid:DataGrid):void { for (var i:int = 0; i < targetGrid.length; i++) { targetGrid.getItemAt(i).ID = i; } }
Tech Reference: AS3
Leave a Reply