예제 #1
0
 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;
 }
예제 #2
0
        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;
                    }
                }
            }
        }