private void AddGroupColumn(GridViewColumnGroup group) { if (!group.IsVisible) { return; } GridViewGroupColumn gridViewGroupColumn = new GridViewGroupColumn(group); gridViewGroupColumn.OwnerTemplate = this.ViewTemplate; this.groupColumns.Add(group, gridViewGroupColumn); this.AddColumn(group, (GridViewColumn)gridViewGroupColumn); foreach (GridViewColumnGroup group1 in (Collection <GridViewColumnGroup>)group.Groups) { this.AddGroupColumn(group1); } if (group.Groups.Count != 0) { return; } foreach (GridViewColumnGroupRow row in (Collection <GridViewColumnGroupRow>)group.Rows) { foreach (string columnName in (Collection <string>)row.ColumnNames) { if (this.ColumnIsVisible((GridViewColumn)this.ViewTemplate.Columns[columnName]) || this.IgnoreColumnVisibility) { this.AddColumn(group, (GridViewColumn)this.ViewTemplate.Columns[columnName]); } } } }
private void FindColumnNode( GridViewColumn column, out ColumnGroupLayoutNode node, out ColumnGroupColumnData data) { Queue <ColumnGroupLayoutNode> columnGroupLayoutNodeQueue = new Queue <ColumnGroupLayoutNode>(); GridViewGroupColumn gridViewGroupColumn = column as GridViewGroupColumn; columnGroupLayoutNodeQueue.Enqueue(this.root); while (columnGroupLayoutNodeQueue.Count > 0) { foreach (ColumnGroupLayoutNode child in columnGroupLayoutNodeQueue.Dequeue().Children) { if (gridViewGroupColumn != null && gridViewGroupColumn.Group == child.Group && child.Group != null) { node = child; data = (ColumnGroupColumnData)null; return; } if (child.ColumnData.ContainsKey(column)) { node = child; data = child.ColumnData[column]; return; } columnGroupLayoutNodeQueue.Enqueue(child); } } node = (ColumnGroupLayoutNode)null; data = (ColumnGroupColumnData)null; }
protected override bool ProcessDragOver(Point currentMouseLocation, ISupportDrag dragObject) { object dataContext = dragObject.GetDataContext(); if (!this.ViewTemplate.AllowColumnReorder) { return(false); } if (dataContext is GridViewColumnGroup) { return(true); } if (dataContext is GridViewGroupColumn) { GridViewGroupColumn gridViewGroupColumn = (GridViewGroupColumn)dataContext; for (GridViewColumnGroup gridViewColumnGroup = this.GridViewGroupColumn.Group; gridViewColumnGroup != null; gridViewColumnGroup = gridViewColumnGroup.Parent) { if (gridViewColumnGroup == gridViewGroupColumn.Group) { return(false); } } } return(base.ProcessDragOver(currentMouseLocation, dragObject)); }
public GridViewColumnGroup FindGroup(GridViewColumn column) { GridViewGroupColumn gridViewGroupColumn = column as GridViewGroupColumn; if (gridViewGroupColumn != null) { return(gridViewGroupColumn.Group); } return(this.FindGroup(this.ColumnGroups, column)); }
public void ProcessRequests() { if (this.processing > 0 || this.tableElement == null || this.tableElement.ViewTemplate == null) { return; } ++this.processing; if (this.BestFitQueue.Count == 0 || !this.TableElement.CanBestFit()) { --this.processing; } else { this.TableElement.UpdateLayout(); if (this.TableElement.VisualRows.Count == 0 || this.tableElement.ViewTemplate == null || this.TableElement.ViewTemplate.Columns.Count == 0) { --this.processing; } else if (this.TableElement.ViewInfo.ParentRow != null && this.TableElement.DesiredSize == SizeF.Empty) { this.TableElement.GridViewElement.UpdateLayout(); --this.processing; } else { this.updateRowsHeight = false; while (this.BestFitQueue.Count > 0) { BestFitQueue.BestFitRequest bestFitRequest = this.BestFitQueue.Dequeue(); BestFitColumnMode? autoSizeMode = bestFitRequest.AutoSizeMode; if (bestFitRequest.Operation == BestFitQueue.BestFitOperation.BestFitAllColumns) { this.BestFitColumnsCore(autoSizeMode); } else { GridViewGroupColumn column = bestFitRequest.Column as GridViewGroupColumn; if (column != null) { this.BestFitGroupColumn(column, true, new BestFitColumnMode?()); } else { BestFitColumnMode mode = autoSizeMode.HasValue ? autoSizeMode.Value : bestFitRequest.Column.AutoSizeMode; this.BestFitColumnCore(bestFitRequest.Column, mode); } } } this.UpdateLayout(); this.SynchronizeViews(); --this.processing; } } }
private List <GridViewGroupColumn> GetGroupColumns( ColumnGroupRowLayout columGroupRowLayout) { List <GridViewGroupColumn> gridViewGroupColumnList = new List <GridViewGroupColumn>(); foreach (GridViewColumn scrollableColumn in (IEnumerable <GridViewColumn>)columGroupRowLayout.ScrollableColumns) { GridViewGroupColumn gridViewGroupColumn = scrollableColumn as GridViewGroupColumn; if (gridViewGroupColumn != null) { gridViewGroupColumnList.Add(gridViewGroupColumn); } } return(gridViewGroupColumnList); }
protected override void ProcessDragDrop(Point dropLocation, ISupportDrag dragObject) { GridViewColumn dataContext = dragObject.GetDataContext() as GridViewColumn; if (!dataContext.AllowHide) { return; } GridViewGroupColumn gridViewGroupColumn = dataContext as GridViewGroupColumn; if (gridViewGroupColumn != null && !gridViewGroupColumn.Group.AllowHide) { return; } dataContext.IsVisible = false; }
private void BestFitGroupColumn( GridViewGroupColumn column, bool bestFitChildColumns, BestFitColumnMode?mode) { GridTableHeaderRowElement headerRowElement = this.GetHeaderRowElement(); IVirtualizedElementProvider <GridViewColumn> elementProvider = this.tableElement.ColumnScroller.ElementProvider; ColumnGroupRowLayout rowLayout = this.tableElement.ViewElement.RowLayout as ColumnGroupRowLayout; if (rowLayout == null || headerRowElement == null) { return; } GridColumnGroupCellElement element = elementProvider.GetElement((GridViewColumn)column, (object)headerRowElement) as GridColumnGroupCellElement; if (element == null || !element.CanBestFit(column.AutoSizeMode)) { return; } float num = this.MeasureCell((GridRowElement)headerRowElement, (GridViewColumn)column, element); this.Detach(elementProvider, (GridCellElement)element); ColumnGroupsCellArrangeInfo columnData = rowLayout.GetColumnData((GridViewColumn)column); if ((double)columnData.Bounds.Width < (double)num) { rowLayout.StartColumnResize((GridViewColumn)column); rowLayout.ResizeColumn((int)((double)num - (double)columnData.Bounds.Width)); rowLayout.InvalidateLayout(); this.TableElement.ViewElement.InvalidateMeasure(true); this.TableElement.ViewElement.UpdateLayout(); rowLayout.EndColumnResize(); } if (!bestFitChildColumns) { return; } foreach (GridViewColumn dataColumn in this.GetDataColumns(column.Group)) { this.BestFitColumnCore(dataColumn, mode.HasValue ? mode.Value : column.AutoSizeMode); } }
public override void UpdateDropContext( ISupportDrag draggedContext, ISupportDrop dropTarget, Point?location) { GridColumnGroupCellElement groupCellElement = dropTarget as GridColumnGroupCellElement; GridHeaderCellElement headerCellElement = dropTarget as GridHeaderCellElement; GridViewGroupColumn gridViewGroupColumn = groupCellElement != null ? groupCellElement.ColumnInfo as GridViewGroupColumn : (GridViewGroupColumn)null; if (headerCellElement == null || !location.HasValue) { this.orientation = Orientation.Vertical; } else { if (headerCellElement.RowElement == null || headerCellElement.RowElement.TableElement == null) { return; } 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; } if ((RadGridViewDragDropService.GetDropPosition(headerCellElement.PointFromScreen(location.Value), headerCellElement.Size) & RadPosition.Bottom) != RadPosition.None && (gridViewGroupColumn != null && gridViewGroupColumn.Group.Rows.Count == 0 && draggedContext.GetDataContext() is GridViewGroupColumn || gridViewGroupColumn != null && gridViewGroupColumn.Group.Groups.Count == 0 && draggedContext.GetDataContext() is GridViewDataColumn || gridViewGroupColumn == null)) { this.orientation = Orientation.Horizontal; } else { this.orientation = Orientation.Vertical; } } }