/// <summary> /// Starts a new group by creating a new table and initializing its properties. /// </summary> /// <param name="groupHeaderRowCellsData">New group's header row data</param> /// <param name="shouldCheckOneGroupPerPage">Do we need a new page again?</param> public void StartNewGroup(IEnumerable <CellData> groupHeaderRowCellsData, bool shouldCheckOneGroupPerPage) { MainTable.ElementComplete = true; //print the last footer var hasRows = MainTable.Rows.Count > 0; if (hasRows) { if (SharedData.ShouldWrapTablesInColumns) { MainGroupTable.AddCell(new PdfPCell(MainTable) { Border = 0 }); } else { MainTable.SpacingAfter += MainTable.HeaderHeight + 2.5f; tryFitToContent(); SharedData.PdfDoc.Add(MainTable); MainTable.DeleteBodyRows(); } } if (SharedData.MainTableEvents != null && _groupNumber > 0) { SharedData.MainTableEvents.GroupAdded(new EventsArguments { PdfDoc = SharedData.PdfDoc, PdfWriter = SharedData.PdfWriter, Table = MainGroupTable, ColumnCellsSummaryData = SharedData.ColumnCellsSummaryData, PreviousTableRowData = CurrentRowInfoData.PreviousTableRowData, PageSetup = SharedData.PageSetup, PdfFont = SharedData.PdfFont, PdfColumnsAttributes = SharedData.PdfColumnsAttributes }); } _groupNumber++; if (shouldCheckOneGroupPerPage) { showOneGroupPerPage(); } renderGroupHeader(groupHeaderRowCellsData); initMainTable(); RowsManager.TableInitAddHeaderAndFooter(); reset(); }
private void initManagers() { _groupsManager = new GroupsManager { SharedData = _commonManagersInfoData, InitTable = _initTable, MainTable = _mainTable, CurrentRowInfoData = CurrentRowInfoData, TableCellHelper = _tableCellHelper, MainGroupTable = _mainGroupTable }; _rowsManager = new RowsManager { SharedData = _commonManagersInfoData, TableCellHelper = _tableCellHelper, MainTable = _mainTable, GroupsManager = _groupsManager, MainGroupTable = _mainGroupTable, CurrentRowInfoData = CurrentRowInfoData }; _groupsManager.RowsManager = _rowsManager; }
// Public Methods (3) /// <summary> /// Creates a new summary row table to display summary of the all of the available groups /// </summary> public void AddAllGroupsSummary() { if (!SharedData.IsGroupingEnabled) { return; } if (SharedData.SummarySettings == null) { return; } if (!SharedData.SummarySettings.OverallSummarySettings.ShowOnEachPage && !SharedData.SummarySettings.PreviousPageSummarySettings.ShowOnEachPage) { return; } if (SharedData.PageSetup.PagePreferences.RunDirection == null) { SharedData.PageSetup.PagePreferences.RunDirection = PdfRunDirection.LeftToRight; } var mainTableAbsoluteWidths = MainTable.AbsoluteWidths; var len = SharedData.ColumnsWidths.Length; if (SharedData.IsMainTableHorizontalStackPanel) { len = SharedData.HorizontalStackPanelColumnsPerRow; } MainTable = new PdfGrid(len) { RunDirection = (int)SharedData.PageSetup.PagePreferences.RunDirection, WidthPercentage = SharedData.PageSetup.MainTablePreferences.WidthPercentage, HeadersInEvent = true, HeaderRows = 0, FooterRows = 1, SkipFirstHeader = true, SplitLate = SharedData.PageSetup.MainTablePreferences.SplitLate, SpacingAfter = spacingAfterAllGroupsSummary, SpacingBefore = spacingBeforeAllGroupsSummary, KeepTogether = SharedData.PageSetup.MainTablePreferences.KeepTogether, SplitRows = SharedData.PageSetup.MainTablePreferences.SplitRows }; setSetTotalWidths(mainTableAbsoluteWidths); TableCellHelper = new TableCellHelper { SharedData = SharedData, MainTable = MainTable, ShowAllGroupsSummaryRow = showAllGroupsSummaryRow, CurrentRowInfoData = CurrentRowInfoData }; RowsManager.MainTable = MainTable; RowsManager.TableCellHelper = TableCellHelper; if (showAllGroupsSummaryRow) { RowsManager.AddFooterRow(RowType.AllGroupsSummaryRow); } MainTable.ElementComplete = true; //print footer if (SharedData.ShouldWrapTablesInColumns) { MainGroupTable.AddCell(new PdfPCell(MainTable) { Border = 0 }); } else { MainTable.SpacingAfter += MainTable.HeaderHeight + 2.5f; SharedData.PdfDoc.Add(MainTable); } }