Telerik报告隐藏子报告

时间:2013-06-10 06:51:22

标签: asp.net .net-4.0 telerik

我正在处理位于此处的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。有谁知道

  1. 如何在上面的赋值语句中解决强制转换问题,或
  2. 如果用户在布尔编辑器中选择False,则隐藏子报表的替代解决方案是什么?

1 个答案:

答案 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