      */
     public function moveRows(fromRow:int, toRow:int, count:int):void
     {
+        var rows:Vector.<GridRowNode> = removeRowsAt(fromRow, count);
+        
+        // Set the row indices of the nodes that are moving.
+        var diff:int = toRow - fromRow;
+        for each (var node:GridRowNode in rows)
+        {
+            node.rowIndex = node.rowIndex + diff;
+        }
+        
+        insertRowsAt(toRow, count, rows);
     }
     
     /**

        this.startY = 0;
        this.startY2 = 0;
    }

    /**
     *  Handles changes in the dataProvider.
     */
    public function dataProviderCollectionChanged(event:CollectionEvent):Boolean 
    {
        switch (event.kind)
        {
            case CollectionEventKind.ADD:    return dataProviderCollectionAdd(event);
            case CollectionEventKind.REMOVE: return dataProviderCollectionRemove(event);
                
            case CollectionEventKind.REPLACE:
            case CollectionEventKind.MOVE:
            case CollectionEventKind.REFRESH:
            case CollectionEventKind.RESET:
            case CollectionEventKind.UPDATE:
                break;
        }
        

     */
    public function removeRows(startRow:int, count:int):void
    {
        removeRowsAt(startRow, count);
    }
    
    /**
