前段时间有人询问如何在rdlc报告中绑定到子对象的属性。问题here。
解决方案是使用这样的表达式:
=Fields!ChildObject.Value.SomeProperty
我最近尝试升级到报告库的第10版(Microsoft.ReportViewer.WebForms和Microsoft.ReportViewer.Common),由于某种原因,这不再适用。我有报告呈现并显示所有数据,除了使用此技术的任何数据。而不是属性值我得到文本:“#Error”
为什么这不再适用?有人知道如何在新版本中使用它吗?
答案 0 :(得分:3)
我可以确认此错误已在VS2010 SP1中修复...但您必须将相关类的所有标记为Serializable。
您可以在此站点上找到显示工作版本的示例项目: http://wraithnath.blogspot.com/2011/04/reportviewer-object-datasource-nested.html
作者还提到你的类需要一个无参数构造函数,但我已经让它使用没有默认构造函数的类。尽管如此,如果您已将所有内容标记为可序列化且仍然看到“#Error”消息,请尝试使用无参数构造函数。
答案 1 :(得分:0)
请参阅问题:child objects in rdlc (Studio 2010RC)
找到关于此的另一个链接:http://social.msdn.microsoft.com/Forums/en-US/vsreportcontrols/thread/16bdd594-7056-4796-8d83-39910dab1651
答案 2 :(得分:0)
你真的不需要展平你的物体。相反,您可以绑定多个数据集以进行报告。然后,您可以通过代码为报表分配多个报表数据源。以下是工作样本:
List<Loan> loans = new List<Loan>();
loans.Add(GetLoanByLoanNumber(loanNumber));
LocalReport report = new LocalReport();
report.ReportPath = HostingEnvironment.MapPath("~/bin/Report/Receipt.rdlc");
ReportDataSource loanDetailsDataSource = new ReportDataSource();
loanDetailsDataSource.Name = "LoanDataSet"; //This refers to the dataset name in the RDLC file
loanDetailsDataSource.Value = loans;
report.DataSources.Add(loanDetailsDataSource);
ReportDataSource loanItemsDataSource = new ReportDataSource();
loanItemsDataSource.Name = "LoanItemsDataSet"; //This refers to the dataset name in the RDLC file
loanItemsDataSource.Value = loans[0].loanItems;
report.DataSources.Add(loanItemsDataSource);
ReportDataSource principalPaymentDataSource = new ReportDataSource();
principalPaymentDataSource.Name = "PrincipalPaymentDataSet"; //This refers to the dataset name in the RDLC file
principalPaymentDataSource.Value = loans[0].principalPayments;
report.DataSources.Add(principalPaymentDataSource);
ReportDataSource interestPaymentDataSource = new ReportDataSource();
interestPaymentDataSource.Name = "InterestPaymentDataSet"; //This refers to the dataset name in the RDLC file
interestPaymentDataSource.Value = loans[0].interestPayments;
report.DataSources.Add(interestPaymentDataSource);
希望这会对某人有所帮助!