示例#1
0
        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);
        }
示例#2
0
        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);
        }