static void InitDetailsBasedonXRTableRepeatingRowHeader(XtraReport rep, ReportGeneratorType kind, int columnWidth) { Font font = new Font("Tahoma", 9.75f); DataTable dataTable = ((DataSet)rep.DataSource).Tables[0]; int processedPage = 0; int usablePageWidth = rep.PageWidth - (rep.Margins.Left + rep.Margins.Right); List <int> columnsWidth = null; if (kind == ReportGeneratorType.FixedColumnWidth) { columnsWidth = DefineColumnsWidth(columnWidth, dataTable.Columns.Count); } else { columnsWidth = GetColumnsBestFitWidth(dataTable, font); } XRTable tableHeader = null; XRTable tableDetail = null; InitNewTableInstancesAt(rep, font, out tableHeader, out tableDetail, new PointF(0, 0)); tableHeader.BeginInit(); tableDetail.BeginInit(); int i = 1; AddCellsToTables(tableHeader, tableDetail, dataTable.Columns[0], columnsWidth[0], true); int remainingSpace = usablePageWidth - columnsWidth[0]; do { if (columnsWidth[i] > remainingSpace) { processedPage++; tableHeader.WidthF = usablePageWidth - remainingSpace; tableDetail.WidthF = usablePageWidth - remainingSpace; tableHeader.EndInit(); tableDetail.EndInit(); InitNewTableInstancesAt(rep, font, out tableHeader, out tableDetail, new PointF(usablePageWidth * processedPage, 0)); tableHeader.BeginInit(); tableDetail.BeginInit(); AddCellsToTables(tableHeader, tableDetail, dataTable.Columns[0], columnsWidth[0], true); remainingSpace = usablePageWidth - columnsWidth[0]; } else { AddCellsToTables(tableHeader, tableDetail, dataTable.Columns[i], columnsWidth[i], false); remainingSpace -= columnsWidth[i]; i++; } }while(i < columnsWidth.Count); tableHeader.WidthF = usablePageWidth - remainingSpace; tableDetail.WidthF = usablePageWidth - remainingSpace; tableHeader.EndInit(); tableDetail.EndInit(); }
public static void InitDetailsBasedonXRTable(XtraReport rep, ReportGeneratorType kind, int columnWidth, bool repeatRowHeader) { if (!repeatRowHeader || kind == ReportGeneratorType.SinglePage) { InitDetailsBasedonXRTableWithoutRepeatingRowHeader(rep, kind, columnWidth); } else { InitDetailsBasedonXRTableRepeatingRowHeader(rep, kind, columnWidth); } }
public static XtraReport GenerateReport(ASPxPivotGrid pivot, ReportGeneratorType kind, int columnWidth, bool repeatRowHeader) { XtraReport rep = new XtraReport(); rep.DataSource = FillDataset(pivot); rep.DataMember = ((DataSet)rep.DataSource).Tables[0].TableName; InitBands(rep); InitStyles(rep); InitDetailsBasedonXRTable(rep, kind, columnWidth, repeatRowHeader); return(rep); }
public static XtraReport GenerateReport(PivotGridControl pivot, ReportGeneratorType kind, decimal columnWidth, bool repeatRowHeader) { XtraReport rep = new XtraReport(); rep.Landscape = true; rep.DataSource = FillDataset(pivot); rep.DataMember = ((DataSet)rep.DataSource).Tables[0].TableName; InitBands(rep); InitStyles(rep); InitDetailsBasedonXRTable(rep, kind, Convert.ToInt32(columnWidth), repeatRowHeader); return(rep); }
static void InitDetailsBasedonXRTableWithoutRepeatingRowHeader(XtraReport rep, ReportGeneratorType kind, int columnWidth) { Font font = new Font("Tahoma", 9.75f); DataSet ds = ((DataSet)rep.DataSource); int colCount = ds.Tables[0].Columns.Count; int colWidth = 0; XRTable tableHeader = null; XRTable tableDetail = null; InitNewTableInstancesAt(rep, font, out tableHeader, out tableDetail, new PointF(0, 0)); List <int> columnsWidth = null; switch (kind) { case ReportGeneratorType.FixedColumnWidth: colWidth = columnWidth; tableHeader.Width = columnWidth * colCount; tableDetail.Width = columnWidth * colCount; break; case ReportGeneratorType.BestFitColumns: columnsWidth = GetColumnsBestFitWidth(ds.Tables[0], font); colWidth = 0; tableHeader.Width = GetTotalWidth(columnsWidth); tableDetail.Width = tableHeader.Width; break; default: colWidth = (rep.PageWidth - (rep.Margins.Left + rep.Margins.Right)) / colCount; tableHeader.Width = (rep.PageWidth - (rep.Margins.Left + rep.Margins.Right)); tableDetail.Width = (rep.PageWidth - (rep.Margins.Left + rep.Margins.Right)); break; } tableHeader.BeginInit(); tableDetail.BeginInit(); // Create table cells, fill the header cells with text, bind the cells to data for (int i = 0; i < colCount; i++) { AddCellsToTables(tableHeader, tableDetail, ds.Tables[0].Columns[i], kind == ReportGeneratorType.BestFitColumns ? columnsWidth[i] : colWidth, i == 0 ? true : false); } tableDetail.EndInit(); tableHeader.EndInit(); // Place the table onto a report's Detail band }