Hello.
I use reporting together with entity framework.
Generally the structure is this:
1. I have a winform and there I select what kind of report I want to see, and also select data for the report.
2. I pass this data to report and refresh it.
I have a report that has some tables and lists inside. To pass data to those report elements I defined SetDS method for each report. For example:
| public void SetDS(Product product) |
| { |
| EntityTools.LoadReferences(product); |
| foreach (WciFilling item in product.WciFilling) |
| EntityTools.LoadReferences(item); |
| foreach (WciAdditionalItem item in product.WciAdditionalItem) |
| EntityTools.LoadReferences(item); |
| this.DataSource = product; |
| this.lstFilling.DataSource = product.WciFilling; |
| this.tbGrid.DataSource = product.WciAdditionalItem.Where(o => o.WciAdditionalItemType.Id.Equals((int)EnWciAdditionalItemType.Grid)); |
| } |
So, now I want to use one of these reports as a sub-report inside of list, and the question is how can I call SetDS for that subreport?
Or, maybe, I'm going in a wrong way, and there is a better approach?
Thanks.
Best regards,
Oleksandr
MultiValue = TrueDear Support Team
We try to generate report items by code (in this case multiple panels with a key/value list).
The problem now is that the PDF rendering does overlap the panels each time after a new page begins.
I have attached a test report that shows the issue.
The reportlayout.jpg shows the first page with the generated lists (there you can see that all of them have the same distance between each other.
But the first list on 2ndpage.jpg overlaps the next one.
Exporting to HTML or RTF generates those distances correctly.
All panels are generated with Dock.Top, the height is dynamic (based on the number of items in the list).
Is it a known problem of PDF rendering and/or do you have a workaround for that?
Please let me know if you need the code.
Thank you
Björn
| private void groupHeader2_ItemDataBinding(object sender, EventArgs e) |
| { |
| Telerik.Reporting.Processing.GroupSection headerAgent = (Telerik.Reporting.Processing.GroupSection)sender; |
| LinqEntityBaseLoan.ComAPayer com = headerAgent.DataObject.RawData as LinqEntityBaseLoan.ComAPayer; |
| headerAgent.Visible = com.Agent_ID != com.SuperAgent_ID; |
| if (headerAgent.Visible) |
| this.groupHeaderAgent.PageBreak = PageBreak.Before; |
| else |
| this.groupHeaderAgent.PageBreak = PageBreak.None; |
| } |
but the result is that in the next printed header, the page break will occur.
I try to change to headerAgent.PageBreak = PageBreak.Before but PageBreak is readonly. It seems that the ..Engine.ReportSection is created before Report.ReportSection (it is normal) and can not be changed (but visible can be !).
After a long search, i created a fake group :
groupheader1
groupheader2fake
groupheader2
detail
groupfooter2
groupfooter2fake
groupfooter1
And write the event groupHeader2fake_ItemDataBinding.
Is it normal to proceed like this ? A settable Break Page or an event before the creation of Engine.ReportSection can be usefull !
For ThisOne As Integer = 0 To 4
Me.Chart1.Series(ThisOne).Name = Me.ReportParameters("DataTitle" + (ThisOne + 1).ToString).Value
Me.Chart1.Series(ThisOne).Appearance.LabelAppearance.LabelLocation = Charting.Styles.StyleSeriesItemLabel.ItemLabelLocation.Inside
Me.Chart1.Series(ThisOne).Appearance.LabelAppearance.Position.AlignedPosition = Charting.Styles.AlignedPositions.Center
Me.Chart1.Series(ThisOne).Appearance.TextAppearance.TextProperties.Color = Color.Black
Me.Chart1.Series(ThisOne).Appearance.Shadow.Blur = 4
Me.Chart1.Series(ThisOne).Appearance.Shadow.Distance = 2
Me.Chart1.Series(ThisOne).Appearance.Shadow.Position = Charting.Styles.ShadowPosition.BottomRight
Me.Chart1.Series(ThisOne).DefaultLabelValue = "#%"
Next