protected virtual GridTraverser CreateTraverser() { PrintGridTraverser printGridTraverser = new PrintGridTraverser(this.ViewTemplate.MasterViewInfo); printGridTraverser.TraversalMode = GridTraverser.TraversalModes.AllRows; printGridTraverser.ProcessHiddenRows = false; printGridTraverser.ProcessHierarchy = true; return((GridTraverser)printGridTraverser); }
private List <GridViewRowInfo> GetRowsToIterateOver() { if (this.ViewTemplate != null && this.ViewTemplate.IsSelfReference) { PrintGridTraverser printGridTraverser = new PrintGridTraverser(this.ViewInfo); List <GridViewRowInfo> gridViewRowInfoList = new List <GridViewRowInfo>(); while (printGridTraverser.MoveNext()) { if (printGridTraverser.Current is GridViewDataRowInfo) { gridViewRowInfoList.Add(printGridTraverser.Current); } } return(gridViewRowInfoList); } ++this.ViewInfo.Version; List <GridViewRowInfo> gridViewRowInfoList1 = new List <GridViewRowInfo>((IEnumerable <GridViewRowInfo>) this.ViewInfo.Rows); --this.ViewInfo.Version; return(gridViewRowInfoList1); }
public virtual void Initialize() { this.PrintRenderer = this.InitializePrintRenderer(this.GridView); this.traverser = new PrintGridTraverser(this.GridView.MasterView); }
public override void DrawPage( PrintGridTraverser traverser, Rectangle drawArea, Graphics graphics, GridPrintSettings settings, int pageNumber) { bool flag1 = this.currentPage != pageNumber; int height = drawArea.Height; int x = drawArea.X; int y = drawArea.Y; TableViewRowLayout rowLayout = this.GetRowLayout((GridViewRowInfo)this.GridView.MasterView.TableHeaderRow, settings.FitWidthMode, settings.HierarchyIndent, drawArea); rowLayout.IgnoreColumnVisibility = settings.PrintHiddenColumns; int num1 = 0; foreach (GridViewColumn renderColumn in (IEnumerable <GridViewColumn>)rowLayout.RenderColumns) { if (renderColumn is GridViewRowHeaderColumn || renderColumn is GridViewIndentColumn) { num1 += rowLayout.GetColumnWidth(renderColumn); } } int num2 = (int)rowLayout.DesiredSize.Width - num1; if (settings.FitWidthMode == PrintFitWidthMode.NoFitCentered) { x += (drawArea.Width - num2) / 2; } if ((this.GridView.ShowColumnHeaders && this.firstPage && pageNumber == 1 || settings.PrintHeaderOnEachPage) && !settings.PrintHierarchy) { this.PrintRow((GridViewRowInfo)this.GridView.MasterView.TableHeaderRow, rowLayout, settings, x, y, graphics, drawArea); int num3 = this.GetDataRowHeight((GridViewRowInfo)this.GridView.MasterView.TableHeaderRow, (TableViewRowLayoutBase)rowLayout) + this.GridView.TableElement.RowSpacing; y += num3; height -= num3; } this.firstPage = false; int num4 = y; GridViewRowInfo row = (GridViewRowInfo)null; if (this.PrintPages.Count > 0 && !settings.PrintHierarchy) { row = traverser.Current; } bool flag2 = true; while (traverser.MoveNext()) { if (traverser.Current is GridViewDataRowInfo || traverser.Current is GridViewGroupRowInfo || traverser.Current is GridViewSummaryRowInfo || traverser.Current is GridViewTableHeaderRowInfo && settings.PrintHierarchy) { GridViewHierarchyRowInfo current = traverser.Current as GridViewHierarchyRowInfo; if (current != null && current.Views.Count > 0) { switch (settings.ChildViewPrintMode) { case ChildViewPrintMode.PrintFirstView: current.ActiveView = current.Views[0]; break; case ChildViewPrintMode.SelectViewToPrint: ChildViewPrintingEventArgs e = new ChildViewPrintingEventArgs(current.Views.IndexOf(current.ActiveView), current); this.OnChildViewPrinting(e); current.ActiveView = current.Views[e.ActiveViewIndex]; break; } } rowLayout = this.GetRowLayout(traverser.Current, settings.FitWidthMode, settings.HierarchyIndent, drawArea); int num3 = !(traverser.Current is GridViewGroupRowInfo) ? this.GetDataRowHeight(traverser.Current, (TableViewRowLayoutBase)rowLayout) : this.GetRowSize(traverser.Current, rowLayout).Height; if ((y + num3 >= drawArea.Bottom || num4 + num3 >= drawArea.Bottom) && !flag2) { traverser.MovePrevious(); num4 = 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 += num3 + this.GridView.TableElement.RowSpacing; } else { num4 += num3 + this.GridView.TableElement.RowSpacing; } } } else if (!(traverser.Current is GridViewSummaryRowInfo) || settings.PrintSummaries) { if (this.currentPage == pageNumber) { this.PrintRow(traverser.Current, rowLayout, settings, x, y, graphics, drawArea); y += num3 + this.GridView.TableElement.RowSpacing; } else { num4 += num3 + this.GridView.TableElement.RowSpacing; } } else { continue; } if (height < num3 && flag2) { ++this.currentPage; break; } flag2 = false; } } } if (this.PrintPages.Count <= 0 || settings.PrintHierarchy) { return; } if (y + this.GetDataRowHeight(traverser.Current, (TableViewRowLayoutBase)rowLayout) < drawArea.Bottom || num4 + this.GetDataRowHeight(traverser.Current, (TableViewRowLayoutBase)rowLayout) < drawArea.Bottom) { ++this.currentPage; } ++this.CurrentPrintPage; this.CurrentPrintPage %= this.PrintPages.Count; if (this.CurrentPrintPage <= 0) { return; } if (row == null) { traverser.Reset(); } else { traverser.GoToRow(row); } }
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; } } } }
public abstract void DrawPage( PrintGridTraverser traverser, Rectangle drawArea, Graphics graphics, GridPrintSettings settings, int pageNumber);