我正在处理位于此处的Telerik Reporting分步教程:
http://www.telerik.com/documents/TelerikReporting-LearningGuide.pdf
我在“实验室:子报告”部分(第111-115页)中精确地执行了这些步骤。因此,本实验将显示Master-Detail报告。运行报表时,UI上有一个布尔编辑器(用户选择True或False)。它应该起作用的方式是,在加载报告时,将显示主报告和详细信息子报告。如果用户选择False,则应该隐藏子报表。
我得到了Master-Detail报告以便正确显示。但是,在我添加隐藏子报表的功能后,当我预览报表时,我收到以下错误消息:“处理SubReport时发生错误'subReport1':指定的强制转换无效”。问题在于以下声明:
(sender as Telerik.Reporting.Processing.SubReport).Visible = (bool)this.ReportParameters["ShowEmployees"].Value;
因此,据我所知,本教程有问题。所以我在上面这个赋值语句右侧尝试的演员表是无效的。我尝试了下面的失败(仍然得到一个例外),也是:
(sender as Telerik.Reporting.Processing.SubReport).Visible = Convert.ToBoolean(this.ReportParameters["ShowEmployees"].Value;
我已经尝试了几天,现在找到一个替代解决方案来实现我的目标,即隐藏子报告以防用户在布尔编辑器中选择False。有谁知道
答案 0 :(得分:1)
自从Telerik报告第3版开始,该教程即将出现,我认为它不会更新。
您可以参考主报告并使用处理报告参数而不是定义,尝试使用以下代码根据报告参数隐藏子报告(虚拟代码,未经过测试以便您了解):
private void subReport1_ItemDataBound(object sender, System.EventArgs e)
{
Processing.SubReport subReport = (Processing.SubReport)sender;
Processing.Report mainRep = (Processing.Report)subReport.Parent;
subReport.Visible = (bool)mainRep.Parameters["ShowEmployees"].Value;
}
有关详细信息,请参阅此处:http://www.telerik.com/help/reporting/designing-reports-parameters-programmatic-control.html