It order to be able to do this, your external datasources for your 2 virtual grids must support inserting/removing rows.
Below is a rough try at this. Since you want special behavior (deleting from the source and inserting into the target along with special drawing queues), and since these are virtual grids where the grid odes not manage the data, the sample uses a derived grid and interacts with the virtual Control methods like OnDragEnter, OnDragDrop, etc, to implement the requested behavior with custom visual queues being drawn as you drag. There are other options of implementing your own custom data objects that can be used directly in teh grid''s own OLE support. This requires creating a IGridDataObjectConsumer object and using RegisterDataObjectConsumer to register it, but this would not let you immedaitely get access to drawing custom visual queues which would require additional work.
Now the derived grid in the sample does fire events, so you probably customize through listening to these events from, say, the parent form. But, in the sample, the customization code is down in the overrides.
The idea is to create an array list of ''row objects'', and then use this as the drag data. The sample has a VirtDataSource class derived from ArrayList that allows the inserting/removing of ''row objects''. It also have various indexers defined to allow straight forward access to the row objects in the arraylist (and to the objects that are in each row object).
Maybe this will serve a starting point for your implementation.
forum11342_3705.zip