or
private void BuildTable(ScheduleInfo context) { //create empty table var scheduleTable = new Table { Location = new PointU(Unit.Cm(0), Unit.Cm(0)), Name = "ScheduleTable", RowHeadersPrintOnEveryPage = true, KeepTogether = false }; //insert table in detail section Details.Items.AddRange(new ReportItemBase[] { scheduleTable }); var rowGroup = new TableGroup(); //add header row scheduleTable.Body.Rows.Add(new TableBodyRow(Unit.Cm(0.8))); //set page layout if (context.Columns.Count<5) { ToPortrait(); } else { ToLandscape(); } var columnWidth = Width/context.Columns.Count; var minWidth = Unit.Mm(30); if (columnWidth < minWidth) columnWidth = minWidth; var rowHeight = Unit.Mm(6); var i = 0; foreach (var column in context.Columns) { scheduleTable.Body.Columns.Add(new TableBodyColumn(columnWidth)); var headerText = new TextBox { Value = column.Header, Size = new SizeU(columnWidth, rowHeight) }; headerText.Style.Font.Bold = true; var cellInfo = column.Appointments != null ? string.Join("\n\n", column.Appointments.Select(x => x.ToString())) : null; var cellText = new TextBox { Value = cellInfo, Size = new SizeU(columnWidth, rowHeight), KeepTogether = false }; scheduleTable.Body.SetCellContent(0, i, cellText); var colGroup = new TableGroup {ReportItem = headerText}; colGroup.GroupKeepTogether = false; scheduleTable.ColumnGroups.Add(colGroup); scheduleTable.Items.AddRange(new ReportItemBase[] { headerText, cellText }); i++; } rowGroup.Groupings.AddRange(new [] {new Grouping("")}); rowGroup.Name = "DetailGroup"; rowGroup.GroupKeepTogether = false; scheduleTable.RowGroups.Add(rowGroup); Details.Items.Add(scheduleTable);}Public Shared Function GetPageBackgroundImage(managedByPartnerId As Integer) If managedByPartnerId = 1 Then Return Bitmap.FromFile("P:\Billing Systems\BESTPASS AM\Invoice Templates\Current\DW Page Invoice.png") Else Return Bitmap.FromFile("P:\Billing Systems\BESTPASS AM\Invoice Templates\Current\Page Invoice.png") End If End Function