我有一个从DataSet创建的Crystal Report。我使用IEnumerable加载它的DataSource
我是这样做的,因为我已经有一个ComponentModel.BindingList(Of Customer)作为列表框的数据源,所以我可以避免双重访问数据库。
我使用以下代码加载报告:
LoadReport("crCustomers.rpt", lstCustomers.DataSource)
Private Sub LoadReport(ByVal ReportName As String, ByVal ReportData As IEnumerable)
'Load desired report
Dim report As New ReportDocument
report.Load(ReportName)
'Load the data into the report
report.SetDataSource(ReportData)
'Set the report into the viewer
crvReportViewer.ReportSource = report
End Sub
所有单一数据源报告都很奇怪,但现在我必须面对一个显示订单数据的报告以及与FK订单(Id)-OrderDetails链接的所有OrderDetails(发票行)的OrderId)。
如何将两个IEnumerable加载为DataSource?
答案 0 :(得分:0)
我使用SubReport解决了它并加载SubReport数据源 以下代码加载客户的数据和客户的电话号码:
LoadReport("crCustomer.rpt", lstCustomers.DataSource, dgvPhones.DataSource)
Private Sub LoadReport(ByVal ReportName As String, ByVal ReportData As IEnumerable, ByVal ReportData2 As IEnumerable)
'Load desired report
Dim report As New ReportDocument
report.Load(ReportName)
'Load the data into the report
report.SetDataSource(ReportData)
report.OpenSubreport("crPhones").SetDataSource(ReportData2)
'Set the report into the viewer
crvReportViewer.ReportSource = report
End Sub