protected override void ProcessDragDrop(Point dropLocation, ISupportDrag dragObject) { GroupFieldDragDropContext dataContext1 = dragObject.GetDataContext() as GroupFieldDragDropContext; if (dataContext1 != null) { dataContext1.ViewTemplate.GroupDescriptors.Remove(dataContext1.GroupDescription); } else { GridViewRowInfo dataContext2 = dragObject.GetDataContext() as GridViewRowInfo; if (dataContext2 != null) { if (this.RowInfo.ViewTemplate.SortDescriptors.Count > 0 || this.RowInfo.ViewTemplate.GroupDescriptors.Count > 0) { return; } bool isDroppedAtLeft = RadGridViewDragDropService.IsDroppedAtTop(dropLocation, this.Size.Height); GridViewTemplate viewTemplate = this.Data.ViewTemplate; int targetIndex = viewTemplate.Rows.IndexOf(this.Data); int draggedItemIndex = viewTemplate.Rows.IndexOf(dataContext2); RadGridViewDragDropService.CalculateTargetIndex(isDroppedAtLeft, viewTemplate.RowCount, ref targetIndex, ref draggedItemIndex); viewTemplate.Rows.Move(draggedItemIndex, targetIndex); } else { base.ProcessDragDrop(dropLocation, dragObject); } } }
internal static void MoveOnLeftOrRight <T>( bool isDroppedAtLeft, Collection <T> collection, T targetItem, T draggedItem) { int targetIndex = collection.IndexOf(targetItem); int draggedItemIndex = collection.IndexOf(draggedItem); int count = collection.Count; RadGridViewDragDropService.CalculateTargetIndex(isDroppedAtLeft, count, ref targetIndex, ref draggedItemIndex); RadGridViewDragDropService.Move <T>(collection, draggedItemIndex, targetIndex); }