protected internal virtual int GetDataRowHeight( GridViewRowInfo row, TableViewRowLayoutBase rowLayout) { if (!this.GridView.AutoSizeRows) { return(rowLayout.GetRowHeight(row)); } IVirtualizedElementProvider <GridViewColumn> elementProvider1 = this.GridView.TableElement.ColumnScroller.ElementProvider; IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.GridView.TableElement.RowScroller.ElementProvider; float val1 = 0.0f; GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement; element1.InitializeRowView(this.GridView.TableElement); element1.Initialize(row); this.GridView.TableElement.Children.Add((RadElement)element1); if (row is GridViewGroupRowInfo) { GridGroupHeaderRowElement headerRowElement = element1 as GridGroupHeaderRowElement; headerRowElement.Measure(new SizeF(rowLayout.DesiredSize.Width, float.PositiveInfinity)); val1 = Math.Max(val1, headerRowElement.DesiredSize.Height); } else { foreach (GridViewColumn column in (Collection <GridViewDataColumn>)row.ViewTemplate.Columns) { if (!(column is GridViewRowHeaderColumn) && !(column is GridViewIndentColumn) && column.IsVisible) { GridCellElement element2 = elementProvider1.GetElement(column, (object)element1) as GridCellElement; element1.Children.Add((RadElement)element2); element2.Initialize(column, element1); element2.SetContent(); element2.UpdateInfo(); (element2 as GridHeaderCellElement)?.UpdateArrowState(); element2.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredSize(element2).Height); element1.Children.Remove((RadElement)element2); this.Detach(elementProvider1, element2); } } } this.GridView.TableElement.Children.Remove((RadElement)element1); this.Detach(elementProvider2, element1); return((int)val1); }
public virtual int GetNumberOfPages(Rectangle drawArea) { TableViewRowLayoutBase rowLayout = (this.grid.ViewDefinition as TableViewDefinition).CreateRowLayout() as TableViewRowLayoutBase; rowLayout.Context = GridLayoutContext.Printer; rowLayout.Initialize(this.grid.TableElement); if (this.GridView.PrintStyle.FitWidthMode == PrintFitWidthMode.FitPageWidth) { rowLayout.MeasureRow(new SizeF((float)drawArea.Width, (float)drawArea.Height)); } else { rowLayout.MeasureRow((SizeF)this.GridView.Size); } int height = drawArea.Height; if (this.PrintHeaderOnEachPage && !this.PrintHierarchy) { height -= rowLayout.GetRowHeight((GridViewRowInfo)this.GridView.MasterView.TableHeaderRow); } int num1 = 0; int num2 = 1; this.traverser.Reset(); this.traverser.ProcessHiddenRows = this.PrintHiddenRows; this.traverser.ProcessHierarchy = this.PrintHierarchy; while (this.traverser.MoveNext()) { if (this.traverser.Current is GridViewDataRowInfo || this.traverser.Current is GridViewTableHeaderRowInfo && (this.PrintHierarchy || !this.PrintHeaderOnEachPage) || (this.traverser.Current is GridViewGroupRowInfo && this.PrintGrouping || this.traverser.Current is GridViewSummaryRowInfo && this.PrintSummaries)) { GridViewHierarchyRowInfo current = this.traverser.Current as GridViewHierarchyRowInfo; if (current != null && current.Views.Count > 0) { switch (this.printSettings.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((object)this, e); current.ActiveView = current.Views[e.ActiveViewIndex]; break; } } int num3 = !this.GridView.AutoSizeRows ? rowLayout.GetRowHeight(this.traverser.Current) + this.grid.TableElement.RowSpacing : this.PrintRenderer.GetDataRowHeight(this.traverser.Current, rowLayout); if (num1 + num3 < height) { num1 += num3; } else { ++num2; num1 = num3; } } } this.traverser.Reset(); TableViewDefinitionPrintRenderer printRenderer = this.PrintRenderer as TableViewDefinitionPrintRenderer; if (printRenderer != null && printRenderer.PrintPages.Count > 0 && !this.PrintHierarchy) { return(num2 * printRenderer.PrintPages.Count); } return(num2); }