public override Point GetDragHintLocation(ISupportDrop dropTarget, Point mousePosition) { GridHeaderCellElement headerCellElement = dropTarget as GridHeaderCellElement; Rectangle boundingRectangle1 = headerCellElement.ControlBoundingRectangle; Rectangle boundingRectangle2 = headerCellElement.RowElement.TableElement.ViewElement.ControlBoundingRectangle; if (boundingRectangle1.Right > boundingRectangle2.Right) { boundingRectangle1.Width -= boundingRectangle1.Right - boundingRectangle2.Right; } if (boundingRectangle1.X < boundingRectangle2.X) { boundingRectangle1.Width -= boundingRectangle2.X - boundingRectangle1.X; boundingRectangle1.X = boundingRectangle2.X; } Rectangle screen = this.GridViewElement.ElementTree.Control.RectangleToScreen(boundingRectangle1); Size size = Size.Empty; if (this.DragHint.Image != null) { size = this.DragHint.Image.Size; } Padding margins = this.DragHint.Margins; Point dropLocation = headerCellElement.PointFromScreen(mousePosition); if (this.orientation == Orientation.Vertical) { return(new Point((RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, headerCellElement.Size.Width) ? screen.X : screen.Right) - size.Width / 2, screen.Y - margins.Top)); } return(new Point(screen.X - margins.Left, screen.Bottom - margins.Top - size.Height / 2)); }
protected override void ProcessColumnDrop(Point dropLocation, GridViewColumn column) { if (TemplateGroupsElement.RaiseGroupByChanging(this.TemplateElement.ViewTemplate, this.Description, NotifyCollectionChangedAction.ItemChanged)) { return; } RadGridViewDragDropService.InsertOnLeftOrRight <SortDescriptor>(RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, this.Size.Width), (Collection <SortDescriptor>) this.Description.GroupNames, this.sortDescription, new SortDescriptor(column.Name, ListSortDirection.Ascending)); TemplateGroupsElement.RaiseGroupByChanged(this.TemplateElement.ViewTemplate, this.Description, NotifyCollectionChangedAction.ItemChanged); }
protected virtual void ProcessColumnDrop(Point dropLocation, GridViewColumn column) { GroupDescriptor groupDescriptor = new GroupDescriptor(); groupDescriptor.GroupNames.Add(new SortDescriptor(column.Name, ListSortDirection.Ascending)); if (TemplateGroupsElement.RaiseGroupByChanging(this.templateElement.ViewTemplate, groupDescriptor, NotifyCollectionChangedAction.Add)) { return; } RadGridViewDragDropService.InsertOnLeftOrRight <GroupDescriptor>(RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, this.Size.Width), (Collection <GroupDescriptor>) this.description.Owner, this.description, groupDescriptor); TemplateGroupsElement.RaiseGroupByChanged(this.templateElement.ViewTemplate, groupDescriptor, NotifyCollectionChangedAction.Add); }
private void ProcessGroupFieldDrop(Point dropLocation, GroupFieldDragDropContext context) { SortDescriptor sortDescription = context.SortDescription; GridViewTemplate viewTemplate = context.ViewTemplate; GroupDescriptor groupDescription = context.GroupDescription; if (TemplateGroupsElement.RaiseGroupByChanging(viewTemplate, groupDescription, NotifyCollectionChangedAction.Batch) || this.ProcessGroupFieldDropOverride(dropLocation, context)) { return; } groupDescription.GroupNames.Remove(sortDescription); GroupDescriptor groupDescriptor = new GroupDescriptor(); groupDescriptor.GroupNames.Add(sortDescription); RadGridViewDragDropService.InsertOnLeftOrRight <GroupDescriptor>(RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, this.Size.Width), (Collection <GroupDescriptor>) this.description.Owner, this.description, groupDescriptor); if (groupDescription.GroupNames.Count == 0) { viewTemplate.DataView.GroupDescriptors.Remove(groupDescription); } TemplateGroupsElement.RaiseGroupByChanged(viewTemplate, groupDescriptor, NotifyCollectionChangedAction.Batch); }
protected override bool ProcessGroupFieldDropOverride( Point dropLocation, GroupFieldDragDropContext context) { SortDescriptor sortDescription = context.SortDescription; GridViewTemplate viewTemplate = context.ViewTemplate; GroupDescriptor groupDescription = context.GroupDescription; groupDescription.GroupNames.Remove(sortDescription); if (RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, this.Size.Width)) { this.Description.GroupNames.Insert(0, sortDescription); } else { this.Description.GroupNames.Add(sortDescription); } if (groupDescription.GroupNames.Count == 0) { viewTemplate.DataView.GroupDescriptors.Remove(groupDescription); } TemplateGroupsElement.RaiseGroupByChanged(context.ViewTemplate, context.GroupDescription, NotifyCollectionChangedAction.Batch); return(true); }
protected override bool ProcessGroupFieldDropOverride( Point dropLocation, GroupFieldDragDropContext context) { bool isDroppedAtLeft = RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, this.Size.Width); if (this.Description != context.GroupDescription) { SortDescriptor sortDescription = context.SortDescription; GridViewTemplate viewTemplate = context.ViewTemplate; context.GroupDescription.GroupNames.Remove(sortDescription); if (context.GroupDescription.GroupNames.Count == 0) { viewTemplate.DataView.GroupDescriptors.Remove(context.GroupDescription); } RadGridViewDragDropService.InsertOnLeftOrRight <SortDescriptor>(isDroppedAtLeft, (Collection <SortDescriptor>) this.Description.GroupNames, this.sortDescription, sortDescription); } else { RadGridViewDragDropService.MoveOnLeftOrRight <SortDescriptor>(isDroppedAtLeft, (Collection <SortDescriptor>) this.Description.GroupNames, this.sortDescription, context.SortDescription); } TemplateGroupsElement.RaiseGroupByChanged(context.ViewTemplate, context.GroupDescription, NotifyCollectionChangedAction.Batch); return(true); }