【问题标题】:SubReport is not working after adding parameter添加参数后子报表不起作用
【发布时间】:2013-01-24 06:01:48
【问题描述】:
我正在编写关于 VS2012 的 RDLC 报告
当我尝试在我的子报表上添加参数时,我的报表无法正常工作,我收到此错误“错误:无法显示子报表。”
在添加参数后,这个事件 LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e) 甚至没有被调用。
【问题讨论】:
标签:
visual-studio-2012
rdlc
subreport
microsoft-reporting
【解决方案1】:
我意识到我在这里聚会迟到了,但是在我的搜索过程中出现了这个问题,所以也许这会对某人有所帮助。我终于在我的 Web 应用程序的主报告中得到了 sup 报告。
在我添加的 Page_Load 中
ReportViewer1.LocalReport.SubreportProcessing += new Microsoft.Reporting.WebForms.SubreportProcessingEventHandler(SetSubDataSource);
this.ReportViewer1.LocalReport.Refresh();
然后在我添加了事件
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e)
{
var report = ((LocalReport)sender).DataSources[0];
var tableid = e.Parameters["tableId"].Values[0];
ObjectDataSource2.SelectParameters[0].DefaultValue = tableid;
e.DataSources.Add(new ReportDataSource("DataSet2", ObjectDataSource2));
}
您还需要确保主报表的子报表以及子报表本身具有正确定义的参数和数据。这适用于我使用带有一个参数的存储过程,但我认为一旦正确触发就很容易添加额外的参数。我还将子报表数据类型的常规选项设置为整数(我的存储过程所期望的类型)并允许空值,并将默认值设置为“指定值”并将其保留为 (Null)。
当我添加时,事情终于开始工作了
<SelectParameters>
<asp:Parameter Name="tableId" Type="Int32" />
</SelectParameters>
在我的子报表数据源对象的 ObjectDataSource2 节点内,你的里程可能会有所不同。