public void UpdateGroupingFields() { if (this.Description == null || string.IsNullOrEmpty(this.Description.Expression)) { this.groupFields = new GroupFieldElement[0]; } else { this.panel.DisposeChildren(); SortDescriptorCollection groupNames = this.Description.GroupNames; int count = groupNames.Count; List <GroupFieldElement> groupFieldElementList = new List <GroupFieldElement>(); GridViewColumnCollection columns = this.TemplateElement.ViewTemplate.Columns; for (int index = 0; index < count; ++index) { GroupFieldElement groupFieldElement = new GroupFieldElement(this.TemplateElement, this.Description, groupNames[index]); if (groupFieldElement.Column != null) { this.panel.Children.Add((RadElement)groupFieldElement); groupFieldElementList.Add(groupFieldElement); if (index < count - 1) { this.panel.Children.Add((RadElement) new GroupLinkElement(this.TemplateElement) { Type = GroupLinkElement.LinkType.NamesLink }); } } } this.groupFields = groupFieldElementList.ToArray(); } }
protected virtual void CalcFinalRectRightToLeftBottomGroupLink( GroupElement fromGroupElement, GroupElement toGroupElement, out PointF beingPoint, out PointF endPoint) { GroupFieldElement groupingFieldElement1 = toGroupElement.GroupingFieldElements[0]; GroupFieldElement groupingFieldElement2 = fromGroupElement.GroupingFieldElements[fromGroupElement.GroupingFieldElements.Count - 1]; Rectangle boundingRectangle1 = groupingFieldElement1.ControlBoundingRectangle; Rectangle boundingRectangle2 = groupingFieldElement2.ControlBoundingRectangle; float x1; float y1; float x2; float y2; if (this.LinkPosition == TemplateGroupsElement.GroupLinkPosition.Bottom) { x1 = (float)(boundingRectangle1.Right + groupingFieldElement1.Padding.Right); y1 = (float)(boundingRectangle2.Bottom + groupingFieldElement2.Padding.Bottom); x2 = (float)(boundingRectangle2.Right - this.LinkOffset); y2 = (float)(boundingRectangle1.Bottom + Math.Abs(boundingRectangle2.Bottom - boundingRectangle1.Y)); } else { x1 = (float)(boundingRectangle1.X + this.LinkOffset); y1 = (float)(boundingRectangle2.Y - Math.Abs(boundingRectangle2.Bottom - boundingRectangle1.Y)); x2 = (float)(boundingRectangle2.X - groupingFieldElement2.Padding.Left); y2 = (float)(boundingRectangle1.Y - groupingFieldElement1.Padding.Top); } beingPoint = new PointF(x1, y1); endPoint = new PointF(x2, y2); }
protected override void OnPreviewDropTarget(PreviewDropTargetEventArgs e) { base.OnPreviewDropTarget(e); TemplateGroupsElement dropTarget = e.DropTarget as TemplateGroupsElement; if (dropTarget == null || dropTarget.CanDragOver(e.DragInstance)) { return; } GroupFieldElement dragInstance = e.DragInstance as GroupFieldElement; if (dragInstance != null) { e.DropTarget = (ISupportDrop)dragInstance.TemplateElement; } else { e.DropTarget = (ISupportDrop)dropTarget.GroupPanelElement; } }
protected virtual IGridDragDropBehavior GetDragDropBehavior() { IGridDragDropBehavior dragDropBehavior = (IGridDragDropBehavior)null; ISupportDrop dropTarget = this.DropTarget; if (dropTarget is GridHeaderCellElement) { dragDropBehavior = (IGridDragDropBehavior) new GridColumnDragDropBehvavior(); } else if (dropTarget is GridDataRowElement) { dragDropBehavior = (IGridDragDropBehavior) new GridRowDragDropBehavior(); } else { GroupFieldElement groupFieldElement = dropTarget as GroupFieldElement; } dragDropBehavior?.Initialize(this.GridViewElement); return(dragDropBehavior); }