this might not be what your looking for, but works.

..set the selectedItem eg

private function moveDown():void {
 if (selIdx < names.length - 1) {
         var rem:Object = names.removeItemAt(selIdx);
         selIdx = selIdx + 1;
         names.addItemAt(rem, selIdx);
         //dg.selectedIndex = selIdx;
         dg.selectedItem = rem
       }
     }


--- In [email protected], "greenfishinwater" 
<[EMAIL PROTECTED]> wrote:
>
> I have a grid in which I want to move rows down when a specific
> button 'Move Down' is clicked. I have this logic working and the 
row
> selected does move down for every click on the button.
> 
> The problem I am having is that I want the row that has been 
selected
> and that is moving down to be always highlighted in the grid as the
> selected row.
> 
> My code does not work. Well on the first click to move down the
> row is moved, but the wrong row is highlighted. On the next click 
to
> move down the row is moved, and the correct row is highlighted.
> This continues so that on alternate clicks the wrong row is 
highlighted.
> 
> Can anybody explain this or provide some code that does highlight 
the
> correct row all the time.
> 
> I have built a simple example to illustrate the problem. When 
running
> select the top row Orange, then click the move down button.
> 
> Andrew
> 
> ** Start of Code:
> 
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="absolute" creationComplete="initApp()">
> <mx:Script>
>   <![CDATA[
>     import mx.collections.ArrayCollection;
>     import mx.events.ListEvent;
>     [Bindable] private var names:ArrayCollection;
>     [Bindable] private var selIdx:int = 99;
>     private function initApp():void {
>       names = new ArrayCollection([{label:"Orange"}, 
{label:"Apple"},
> {label:"Banana"}, {label:"Grape"}, {label:"Pear"}]);
>     }
>     private function moveDown():void {
>       if (selIdx < names.length - 1) {
>         var rem:Object = names.removeItemAt(selIdx);
>         selIdx = selIdx + 1;
>         names.addItemAt(rem, selIdx);
>         dg.selectedIndex = selIdx;
>       }
>     }
>     private function rowChanged(e:ListEvent):void {
>       selIdx = dg.selectedIndex;
>     }
>   ]]>
> </mx:Script>
>   <mx:VBox>
>     <mx:DataGrid id="dg" dataProvider="{names}" rowCount="7"
> itemClick="rowChanged(event)">
>       <mx:columns>
>         <mx:DataGridColumn dataField="label" width="90"/>
>       </mx:columns>
>     </mx:DataGrid>
>     <mx:Button label="Move Down" click="moveDown()"/>
>     <mx:Label text="Selected Index = {selIdx}"/>
>   </mx:VBox>
> </mx:Application>
> 
> 
> ***** End of Code
>


Reply via email to