Hi
--------------------------
EDIT:
I am really sorry for the long post, tell me if you want it to a pastebin, the problem here after some debugging is that the structure seems ok after going through properties when opening it in debugging mode, the really big problem for me is that I canot get any kind of output from the report telling me what is wrong and why it's thinking there is no report. like some kind of exception catching
--------------------------
I am using the Q2 2010 SP1 4.1 and telerik radcontrols for winforms Q1 2012 SP1 and I just created a report by using some dynamic coding in the report(which is embeded in a winform), at first I copy pasted and edited a lot from some code made in designtime, however as this resulted in ugly (but working) code I created a class to do it for me however it now shows no report, just a message saying "Object reference not set to an instance of an object."
this is my weekreport.cs class containing the definition class for the report, the uglypopulate method is the one which works, the almostpopulatelikeabaws is the new code I created with the help class
And this is the helper class
I also attached a picture of how the report looks once generated, I removed the names of the customers though hope you don't mind
any help is appreciated :)
Update:
I tried adding this code block just to test if it was the generator class or the code using it that was the problem, and it's the generatorclass. This is the code I used to show one row with and I still got the problem
--------------------------
EDIT:
I am really sorry for the long post, tell me if you want it to a pastebin, the problem here after some debugging is that the structure seems ok after going through properties when opening it in debugging mode, the really big problem for me is that I canot get any kind of output from the report telling me what is wrong and why it's thinking there is no report. like some kind of exception catching
--------------------------
I am using the Q2 2010 SP1 4.1 and telerik radcontrols for winforms Q1 2012 SP1 and I just created a report by using some dynamic coding in the report(which is embeded in a winform), at first I copy pasted and edited a lot from some code made in designtime, however as this resulted in ugly (but working) code I created a class to do it for me however it now shows no report, just a message saying "Object reference not set to an instance of an object."
this is my weekreport.cs class containing the definition class for the report, the uglypopulate method is the one which works, the almostpopulatelikeabaws is the new code I created with the help class
using System.Collections.Generic;using System.Data;using BE;namespace TimeRegisterClient{ using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using Telerik.Reporting; using Telerik.Reporting.Drawing; /// <summary> /// Summary description for WeekReport. /// </summary> public partial class TidsRapport : Telerik.Reporting.Report { private void setEmptyRowStandard(Telerik.Reporting.TextBox RowBox) { RowBox.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Value = ""; } private void setTotalRowStandard(Telerik.Reporting.TextBox RowBox) { RowBox.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.BorderWidth.Top = new Telerik.Reporting.Drawing.Unit(1D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.BorderStyle.Top = BorderType.Solid; RowBox.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.TextAlign = HorizontalAlign.Left; RowBox.Style.VerticalAlign = VerticalAlign.Middle; } private void setCustomerRowStandard(Telerik.Reporting.TextBox RowBox) { RowBox.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.TextAlign = HorizontalAlign.Left; RowBox.Style.VerticalAlign = VerticalAlign.Middle; } private void setDayHeaderStandard(Telerik.Reporting.TextBox RowBox) { RowBox.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.BorderWidth.Bottom = new Telerik.Reporting.Drawing.Unit(1D, Telerik.Reporting.Drawing.UnitType.Point); ; RowBox.Style.BorderStyle.Bottom = BorderType.Solid; RowBox.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.VerticalAlign = VerticalAlign.Middle; } private void setColumnStandard(Telerik.Reporting.TextBox RowBox,Unit height) { RowBox.Style.Font.Underline = true; RowBox.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(14D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); RowBox.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; RowBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm),height); } public TidsRapport(Dictionary<DayOfWeek, Dictionary<int, UpdCus>> values, UserDetail user, DateTime from, DateTime to) : this() { FromTime = from; ToTime = to; WriteDate(); TxtFraBruger.Value += user.Name; populatealmostlikeabaws(values); //uglypopulate(values); } #region new private void populatealmostlikeabaws(Dictionary<DayOfWeek, Dictionary<int, UpdCus>> values) { PointU l = new PointU( new Unit(0.299999862909317D, UnitType.Cm), new Unit(4.5999999046325684D, UnitType.Cm)); SizeU s = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(12.600000381469727D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(2.4000000953674316D, Telerik.Reporting.Drawing.UnitType.Cm)); ReportTableGenerator tg = new ReportTableGenerator(s, l, new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm)); setColumnStandard(tg.Nextbox, tg.DefaultRowHeight); tg.Nextbox.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Left; tg.Nextbox.Value = "Dag/Kunde"; tg.addColumn(new Telerik.Reporting.Drawing.Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm)); setColumnStandard(tg.Nextbox, tg.DefaultRowHeight); tg.Nextbox.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Center; tg.Nextbox.Value = "Tider"; tg.addColumn(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm)); tg.DefaultRowHeight = new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm); Dictionary<int, UpdCus> total = new Dictionary<int, UpdCus>(); DayOfWeek DayOfWork = FromTime.DayOfWeek; for (int i = 0; i < (values.Keys.Count + 1); i++) { Boolean notlast = i < values.Keys.Count; setDayHeaderStandard(tg.Nextbox); tg.Nextbox.Style.TextAlign = HorizontalAlign.Left; tg.Nextbox.Style.Padding.Left = new Unit(1.5, UnitType.Cm); tg.Nextbox.Style.Font.Bold = true; if (notlast) tg.Nextbox.Value = DayOfWork.ToString(); else tg.Nextbox.Value = "Samlet tid"; tg.addRowCell(); setDayHeaderStandard(tg.Nextbox); tg.Nextbox.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Center; tg.addRowCell(); tg.appendRow(); Decimal weekHours = 0; #region Customer Times loop Dictionary<int, UpdCus> temp; if (notlast) temp = values[DayOfWork]; else temp = total; foreach (UpdCus c in temp.Values) { if (notlast) { if (!total.ContainsKey(c.CustomerId)) { total.Add(c.CustomerId, c); } else { total[c.CustomerId].update.TimeSpent += c.update.TimeSpent; } } setCustomerRowStandard(tg.Nextbox); tg.Nextbox.Style.Padding.Left = new Unit(2.5, UnitType.Cm); tg.Nextbox.Value = c.CustomerName; tg.addRowCell(); setCustomerRowStandard(tg.Nextbox); tg.Nextbox.Value = c.update.TimeSpent.ToString(); tg.addRowCell(); tg.appendRow(); weekHours += c.update.TimeSpent; } #endregion #region Total Row add setTotalRowStandard(tg.Nextbox); tg.Nextbox.Style.Padding.Left = new Unit(2.5, UnitType.Cm); tg.Nextbox.Value = "total tid registreret " + (notlast ? DayOfWork + "" : "I alt"); tg.addRowCell(); setTotalRowStandard(tg.Nextbox); tg.Nextbox.Value = weekHours + ""; tg.addRowCell(); tg.appendRow(); #endregion #region empty row add if (notlast) { setEmptyRowStandard(tg.Nextbox); tg.addRowCell(); setEmptyRowStandard(tg.Nextbox); tg.addRowCell(); tg.appendRow(); } #endregion DayOfWork++; } tg.finishTable(); DetailSection.Items.Add(tg.table); } #endregion #region old private void uglypopulate(Dictionary<DayOfWeek, Dictionary<int, UpdCus>> values) { Telerik.Reporting.Table DataTable; List<Telerik.Reporting.ReportItemBase> tableItems = new List<ReportItemBase>(); Telerik.Reporting.TextBox FirstDay = new Telerik.Reporting.TextBox(); Telerik.Reporting.TextBox empty = new Telerik.Reporting.TextBox(); DataTable = new Telerik.Reporting.Table(); DetailSection.Items.Add(DataTable); Telerik.Reporting.TextBox TextHeader; Telerik.Reporting.TextBox HourHeader; Telerik.Reporting.TableGroup tableGroup1 = new Telerik.Reporting.TableGroup(); Telerik.Reporting.TableGroup tableGroup2 = new Telerik.Reporting.TableGroup(); Telerik.Reporting.TableGroup tableGroup3 = new Telerik.Reporting.TableGroup(); TextHeader = new Telerik.Reporting.TextBox(); HourHeader = new Telerik.Reporting.TextBox(); TextHeader = new Telerik.Reporting.TextBox(); HourHeader = new Telerik.Reporting.TextBox(); DataTable.Body.Columns.Add(new Telerik.Reporting.TableBodyColumn(new Telerik.Reporting.Drawing.Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm))); DataTable.Body.Columns.Add(new Telerik.Reporting.TableBodyColumn(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm))); DataTable.Body.Rows.Add(new Telerik.Reporting.TableBodyRow(new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm))); DataTable.Body.SetCellContent(0, 0, FirstDay); DataTable.Body.SetCellContent(0, 1, empty); tableGroup1.ReportItem = TextHeader; tableGroup2.ReportItem = HourHeader; DataTable.ColumnGroups.Add(tableGroup1); DataTable.ColumnGroups.Add(tableGroup2); tableItems.AddRange(new Telerik.Reporting.ReportItemBase[] { FirstDay, empty, TextHeader, HourHeader}); DataTable.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.299999862909317D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(4.5999999046325684D, Telerik.Reporting.Drawing.UnitType.Cm)); DataTable.Name = "DataTable"; DataTable.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(12.600000381469727D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(2.4000000953674316D, Telerik.Reporting.Drawing.UnitType.Cm)); TextHeader.Name = "TextHeader"; TextHeader.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm)); TextHeader.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); TextHeader.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(14D, Telerik.Reporting.Drawing.UnitType.Point); TextHeader.Style.Font.Underline = true; TextHeader.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Left; TextHeader.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; TextHeader.Value = "Dag/Kunde"; HourHeader.Name = "HourHeader"; HourHeader.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm)); HourHeader.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); HourHeader.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(14D, Telerik.Reporting.Drawing.UnitType.Point); HourHeader.Style.Font.Underline = true; HourHeader.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Center; HourHeader.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; HourHeader.Value = "Tider"; Boolean made = true; int row = 1; Dictionary<int, UpdCus> total = new Dictionary<int, UpdCus>(); DayOfWeek DayOfWork = FromTime.DayOfWeek; for (int i = 0; i < (values.Keys.Count + 1); i++) { Boolean notlast = i < values.Keys.Count; if (made) { made = false; } else { DataTable.Body.Rows.Add(new Telerik.Reporting.TableBodyRow(new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm))); FirstDay = new Telerik.Reporting.TextBox(); empty = new Telerik.Reporting.TextBox(); DataTable.Body.SetCellContent(row, 0, FirstDay); DataTable.Body.SetCellContent(row, 1, empty); row++; tableItems.AddRange(new Telerik.Reporting.ReportItemBase[] { FirstDay, empty}); } TableGroup t = new TableGroup(); tableGroup3.ChildGroups.Add(t); FirstDay.Name = DayOfWork.ToString(); //FirstDay.Size = new SizeU(new Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm)); FirstDay.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); FirstDay.Style.BorderWidth.Bottom = new Telerik.Reporting.Drawing.Unit(1D, Telerik.Reporting.Drawing.UnitType.Point); ; FirstDay.Style.BorderStyle.Bottom = BorderType.Solid; FirstDay.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); FirstDay.Style.TextAlign = HorizontalAlign.Left; FirstDay.Style.VerticalAlign = VerticalAlign.Middle; FirstDay.Style.Padding.Left = new Unit(1.5, UnitType.Cm); FirstDay.Style.Font.Bold = true; if (notlast) FirstDay.Value = DayOfWork.ToString(); else FirstDay.Value = "Samlet tid"; // empty.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm)); empty.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Center; empty.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; empty.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); empty.Style.BorderWidth.Bottom = new Telerik.Reporting.Drawing.Unit(1D, Telerik.Reporting.Drawing.UnitType.Point); empty.Style.BorderStyle.Bottom = BorderType.Solid; empty.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); Decimal weekHours = 0; #region Customer Times loop Dictionary<int, UpdCus> temp; if (notlast) temp = values[DayOfWork]; else temp = total; foreach (UpdCus c in temp.Values) { if (notlast) { if (!total.ContainsKey(c.CustomerId)) { total.Add(c.CustomerId, c); } else { total[c.CustomerId].update.TimeSpent += c.update.TimeSpent; } } DataTable.Body.Rows.Add(new Telerik.Reporting.TableBodyRow(new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm))); Telerik.Reporting.TextBox Customer = new Telerik.Reporting.TextBox(); Telerik.Reporting.TextBox Time = new Telerik.Reporting.TextBox(); empty.Name = DayOfWork.ToString() + "e"; DataTable.Body.SetCellContent(row, 0, Customer); DataTable.Body.SetCellContent(row, 1, Time); row++; tableItems.AddRange(new Telerik.Reporting.ReportItemBase[] { Customer, Time}); TableGroup t1 = new TableGroup(); tableGroup3.ChildGroups.Add(t1); Customer.Name = DayOfWork.ToString() + c.CustomerName; // Customer.Size = new SizeU(new Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm)); Customer.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); Customer.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); Customer.Style.Padding.Left = new Unit(2.5, UnitType.Cm); Customer.Style.TextAlign = HorizontalAlign.Left; Customer.Style.VerticalAlign = VerticalAlign.Middle; Customer.Value = c.CustomerName; //Console.WriteLine(c.CustomerName + ": " + c.update.TimeSpent); //TableGroup n = new TableGroup(); // n.Grouping.Add(c.CustomerName); // DataTable.RowGroups.Add(n); Time.Name = DayOfWork.ToString() + "T"; Time.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); //Time.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm)); Time.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Left; Time.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; Time.Value = c.update.TimeSpent.ToString(); weekHours += c.update.TimeSpent; } #endregion #region Total Row add DataTable.Body.Rows.Add(new Telerik.Reporting.TableBodyRow(new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm))); Telerik.Reporting.TextBox CustomerTotal = new Telerik.Reporting.TextBox(); Telerik.Reporting.TextBox TimeTotal = new Telerik.Reporting.TextBox(); empty.Name = DayOfWork.ToString() + "e"; DataTable.Body.SetCellContent(row, 0, CustomerTotal); DataTable.Body.SetCellContent(row, 1, TimeTotal); row++; tableItems.AddRange(new Telerik.Reporting.ReportItemBase[] { CustomerTotal, TimeTotal}); TableGroup t2 = new TableGroup(); tableGroup3.ChildGroups.Add(t2); CustomerTotal.Name = DayOfWork.ToString() + "TotalDescription" + notlast; //CustomerTotal.Size = new SizeU(new Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm)); CustomerTotal.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); CustomerTotal.Style.BorderWidth.Top = new Telerik.Reporting.Drawing.Unit(1D, Telerik.Reporting.Drawing.UnitType.Point); CustomerTotal.Style.BorderStyle.Top = BorderType.Solid; CustomerTotal.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); CustomerTotal.Style.Padding.Left = new Unit(2.5, UnitType.Cm); CustomerTotal.Style.TextAlign = HorizontalAlign.Left; CustomerTotal.Style.VerticalAlign = VerticalAlign.Middle; CustomerTotal.Value = "total tid registreret " + (notlast ? DayOfWork + "" : "I alt"); TimeTotal.Name = DayOfWork.ToString() + "TotalTimeTotal" + notlast; //TimeTotal.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm)); TimeTotal.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Left; TimeTotal.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; TimeTotal.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); TimeTotal.Style.BorderWidth.Top = new Telerik.Reporting.Drawing.Unit(1D, Telerik.Reporting.Drawing.UnitType.Point); TimeTotal.Style.BorderStyle.Top = BorderType.Solid; TimeTotal.Value = weekHours + ""; #endregion #region empty row add if (notlast) { DataTable.Body.Rows.Add(new Telerik.Reporting.TableBodyRow(new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm))); Telerik.Reporting.TextBox CustomerEmpty = new Telerik.Reporting.TextBox(); Telerik.Reporting.TextBox TimeEmpty = new Telerik.Reporting.TextBox(); empty.Name = DayOfWork.ToString() + "e"; DataTable.Body.SetCellContent(row, 0, CustomerEmpty); DataTable.Body.SetCellContent(row, 1, TimeEmpty); row++; tableItems.AddRange(new Telerik.Reporting.ReportItemBase[] { CustomerEmpty, TimeEmpty}); TableGroup t3 = new TableGroup(); tableGroup3.ChildGroups.Add(t3); CustomerEmpty.Name = DayOfWork.ToString() + "dEmpty"; // CustomerEmpty.Size = new SizeU(new Unit(10.09999942779541D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm)); CustomerEmpty.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); CustomerEmpty.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(12D, Telerik.Reporting.Drawing.UnitType.Point); CustomerEmpty.Style.Padding.Left = new Unit(2.5, UnitType.Cm); CustomerEmpty.Style.TextAlign = HorizontalAlign.Left; CustomerEmpty.Style.VerticalAlign = VerticalAlign.Bottom; CustomerEmpty.Value = ""; TimeEmpty.Name = DayOfWork.ToString() + "EmptyTime"; //TimeEmpty.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4999997615814209D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(0.5D, Telerik.Reporting.Drawing.UnitType.Cm)); TimeEmpty.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Left; TimeEmpty.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Bottom; TimeEmpty.Style.BorderWidth.Default = new Telerik.Reporting.Drawing.Unit(0D, Telerik.Reporting.Drawing.UnitType.Point); TimeEmpty.Value = ""; } #endregion DayOfWork++; } DataTable.Items.AddRange(tableItems.ToArray()); DataTable.RowGroups.Add(tableGroup3); tableGroup3.Grouping.AddRange(new Telerik.Reporting.Data.Grouping[] { new Telerik.Reporting.Data.Grouping("")}); tableGroup3.Name = "DetailGroup"; } #endregion public TidsRapport() { InitializeComponent(); } private void WriteDate() { TitleTextBox.Value += FromTime.ToShortDateString() + " til " + ToTime; TitleTextBox.Width += TitleTextBox.Width + new Unit(8.0, UnitType.Cm); } protected DateTime FromTime { get; set; } protected DateTime ToTime { get; set; } }}And this is the helper class
using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using Telerik.Reporting;using Telerik.Reporting.Data;using Telerik.Reporting.Drawing;namespace TimeRegisterClient{ class ReportTableGenerator { public int CurrentRow { get; private set; } public int CurrentColumn { get; private set; } public int MaxColumns { get; private set; } public TextBox Nextbox { get; set; } private List<TextBox> nextRow { get; set; } private Table GeneratedTable; public Table table { get { if (isFinished) return GeneratedTable; return null; } private set { GeneratedTable = value; } } public Boolean isFinished { get; private set; } public Boolean ColumnsSet { get; set; } private List<ReportItemBase> tableItems { get; set; } public Unit DefaultRowHeight { get; set; } public ReportTableGenerator(Unit colHeight) { ColumnsSet = false; CurrentColumn = 0; CurrentRow = 0; MaxColumns = 0; DefaultRowHeight = new TextBox().Size.Height; RowGroup = new TableGroup(); tableItems = new List<ReportItemBase>(); GeneratedTable = new Table(); //GeneratedTable.Body.Rows.Add(new TableBodyRow(colHeight)); resetRow(); resetBoxes(); GeneratedTable.Name = "GeneratedTable"; } public ReportTableGenerator( SizeU size,PointU location,Unit columnheight):this(columnheight) { setDimensions(size,location); } public void finishTable() { GeneratedTable.Items.AddRange(tableItems.ToArray()); GeneratedTable.RowGroups.Add(RowGroup); RowGroup.Grouping.AddRange(new Grouping[] { new Grouping("") }); RowGroup.Name = "DetailGroup"; isFinished = true; } private void resetRow() { nextRow=new List<TextBox>(); } public void resetBoxes() { Nextbox = new TextBox(); } public void setDimensions(SizeU size, PointU location) { GeneratedTable.Location = location; GeneratedTable.Size = size; } public void addRowCell() { nextRow.Add(Nextbox); resetBoxes(); } public void appendRow() { int dif = nextRow.Count - (MaxColumns+1); if (dif > 0) throw new Exception("you added " + dif + " more cells to a row than possible"); if (!ColumnsSet) { ColumnsSet = true; completeColumns(); } GeneratedTable.Body.Rows.Add(new TableBodyRow(DefaultRowHeight)); TableGroup newGroup = new TableGroup(); RowGroup.ChildGroups.Add(newGroup); foreach (TextBox t in nextRow) { if (t.Name.Equals("")) t.Name = CurrentRow + "," + CurrentColumn; addCell(t); } resetRow(); } private void addCell(TextBox t) { GeneratedTable.Body.SetCellContent(CurrentRow,CurrentColumn,t); iterateCell(); tableItems.Add(t); } public void addColumn(Unit Width) { if(ColumnsSet) throw new Exception("You cannot add anymore columns at the given time"); GeneratedTable.Body.Columns.Add(new TableBodyColumn(Width)); TableGroup cgroup = new TableGroup(); MaxColumns++; cgroup.ReportItem = Nextbox; GeneratedTable.ColumnGroups.Add(cgroup); addCell(Nextbox); resetBoxes(); } private void completeColumns() { MaxColumns--; iterateCell(); } private void iterateCell() { if (CurrentColumn >= MaxColumns) { CurrentColumn = 0; CurrentRow++; } else { CurrentColumn++; } } private TableGroup RowGroup { get; set; } }}I also attached a picture of how the report looks once generated, I removed the names of the customers though hope you don't mind
any help is appreciated :)
Update:
I tried adding this code block just to test if it was the generator class or the code using it that was the problem, and it's the generatorclass. This is the code I used to show one row with and I still got the problem
PointU l = new PointU( new Unit(0.299999862909317D, UnitType.Cm), new Unit(4.5999999046325684D, UnitType.Cm)); SizeU s = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(12.600000381469727D, Telerik.Reporting.Drawing.UnitType.Cm), new Telerik.Reporting.Drawing.Unit(2.4000000953674316D, Telerik.Reporting.Drawing.UnitType.Cm)); ReportTableGenerator rg = new ReportTableGenerator(s, l, new Telerik.Reporting.Drawing.Unit(0.6D, Telerik.Reporting.Drawing.UnitType.Cm)); rg.Nextbox.Value = "ctest1"; rg.addColumn(new Unit(0.6D, UnitType.Cm)); rg.Nextbox.Value = "ctest2"; rg.addColumn(new Unit(0.6D, UnitType.Cm)); rg.Nextbox.Value = "row1"; rg.addRowCell(); rg.Nextbox.Value = "row12"; rg.appendRow(); rg.finishTable(); DetailSection.Items.Add(rg.table);