protected virtual void UpdateLayoutHelper() { if (this.ViewTemplate == null) { return; } this.layoutHelper = this.ViewTemplate.AutoSizeColumnsMode != GridViewAutoSizeColumnsMode.Fill ? new ColumnLayoutHelper(this) : (ColumnLayoutHelper) new StretchColumnLayoutHelper(this); this.autoSizeColumnsMode = this.ViewTemplate.AutoSizeColumnsMode; }
private TableViewRowLayout GetRowLayout( GridViewRowInfo row, PrintFitWidthMode fitWidthMode, int hierarchyIndent, Rectangle drawArea) { int key = row.ViewTemplate.GetHashCode() + row.HierarchyLevel; if (this.rowLayouts.ContainsKey(key)) { return(this.rowLayouts[key]); } GridTableElement viewUiElement = row.ViewTemplate.ViewDefinition.CreateViewUIElement(row.ViewInfo) as GridTableElement; viewUiElement.Initialize(this.GridView.GridViewElement, row.ViewInfo); viewUiElement.RowHeight = this.GridView.TableElement.RowHeight; viewUiElement.TableHeaderHeight = this.GridView.TableElement.TableHeaderHeight; viewUiElement.GroupHeaderHeight = this.GridView.TableElement.GroupHeaderHeight; this.GridView.ElementTree.ApplyThemeToElement((RadObject)viewUiElement); TableViewRowLayout tableViewRowLayout = new TableViewRowLayout(); tableViewRowLayout.Context = GridLayoutContext.Printer; tableViewRowLayout.Initialize(viewUiElement); int num1 = 0; foreach (GridViewColumn renderColumn in (IEnumerable <GridViewColumn>)tableViewRowLayout.RenderColumns) { if (renderColumn is GridViewRowHeaderColumn || renderColumn is GridViewIndentColumn) { num1 += tableViewRowLayout.GetColumnWidth(renderColumn); } } this.GridView.BeginUpdate(); GridViewAutoSizeColumnsMode autoSizeColumnsMode = tableViewRowLayout.ViewTemplate.AutoSizeColumnsMode; if (fitWidthMode == PrintFitWidthMode.FitPageWidth) { ColumnsState state = this.SaveColumnsState(tableViewRowLayout.ViewTemplate); tableViewRowLayout.ViewTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; int num2 = row.Group != null ? row.Group.Level + 1 : 0; tableViewRowLayout.MeasureRow(new SizeF((float)(drawArea.Width + num1 - (row.HierarchyLevel - num2) * hierarchyIndent), (float)drawArea.Height)); this.RestoreColumnsState(state); } else { tableViewRowLayout.ViewTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.None; tableViewRowLayout.MeasureRow(new SizeF((float)this.GridView.Width, (float)this.GridView.Height)); } tableViewRowLayout.ViewTemplate.AutoSizeColumnsMode = autoSizeColumnsMode; this.GridView.EndUpdate(false); this.rowLayouts.Add(key, tableViewRowLayout); return(tableViewRowLayout); }
public override void DrawPage( PrintGridTraverser traverser, Rectangle drawArea, Graphics graphics, GridPrintSettings settings, int pageNumber) { bool flag1 = this.currentPage != pageNumber; int x = drawArea.X; int y = drawArea.Y; int height = drawArea.Height; ColumnGroupRowLayout rowLayout = new ColumnGroupRowLayout(this.GridView.ViewDefinition as ColumnGroupsViewDefinition); rowLayout.IgnoreColumnVisibility = settings.PrintHiddenColumns; rowLayout.Context = GridLayoutContext.Printer; rowLayout.Initialize(this.GridView.TableElement); int num1 = 0; foreach (GridViewColumn systemColumn in rowLayout.SystemColumns) { num1 += rowLayout.GetColumnWidth(systemColumn); } if (settings.FitWidthMode == PrintFitWidthMode.FitPageWidth) { this.GridView.BeginUpdate(); GridViewAutoSizeColumnsMode autoSizeColumnsMode = rowLayout.ViewTemplate.AutoSizeColumnsMode; rowLayout.ViewTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; rowLayout.MeasureRow(new SizeF((float)(drawArea.Width + num1), (float)drawArea.Height)); rowLayout.ViewTemplate.AutoSizeColumnsMode = autoSizeColumnsMode; this.GridView.EndUpdate(false); } else { this.GridView.BeginUpdate(); GridViewAutoSizeColumnsMode autoSizeColumnsMode = rowLayout.ViewTemplate.AutoSizeColumnsMode; rowLayout.ViewTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.None; rowLayout.MeasureRow(new SizeF((float)this.GridView.Width, (float)this.GridView.Height)); rowLayout.ViewTemplate.AutoSizeColumnsMode = autoSizeColumnsMode; this.GridView.EndUpdate(false); } int num2 = (int)rowLayout.DesiredSize.Width - num1; if (settings.FitWidthMode == PrintFitWidthMode.NoFitCentered) { x += (drawArea.Width - num2) / 2; } if (this.firstPage && pageNumber == 1 || settings.PrintHeaderOnEachPage) { this.firstPage = false; this.PrintRow((GridViewRowInfo)this.GridView.MasterView.TableHeaderRow, rowLayout, settings, x, y, graphics); int rowHeight = rowLayout.GetRowHeight((GridViewRowInfo)this.GridView.MasterView.TableHeaderRow); y += rowHeight; height -= rowHeight; } int num3 = y; bool flag2 = true; while (traverser.MoveNext()) { int num4 = rowLayout.GetRowHeight(traverser.Current) + this.GridView.TableElement.RowSpacing; if (traverser.Current is GridViewGroupRowInfo || traverser.Current is GridViewDataRowInfo || traverser.Current is GridViewSummaryRowInfo) { if ((y + num4 >= drawArea.Bottom || num3 + num4 >= drawArea.Bottom) && !flag2) { traverser.MovePrevious(); num3 = y; bool flag3 = this.currentPage != pageNumber; ++this.currentPage; if (!flag3) { break; } } else { if (traverser.Current is GridViewGroupRowInfo) { if (settings.PrintGrouping) { if (this.currentPage == pageNumber) { this.PrintRowWideCell(traverser.Current, rowLayout, settings, x, y, graphics); y += num4; } else { num3 += num4; } } } else if (!(traverser.Current is GridViewSummaryRowInfo) || settings.PrintSummaries) { if (this.currentPage == pageNumber) { this.PrintRow(traverser.Current, rowLayout, settings, x, y, graphics); y += num4; } else { num3 += num4; } } else { continue; } if (height < num4 && flag2) { ++this.currentPage; break; } flag2 = false; } } } }