我正在研究关于VS2012的RDLC报告
当我尝试在我的Sub报表上添加参数时,我的报表无效,我收到此错误“错误:无法显示子报表。”
添加参数后,此事件甚至不会调用LocalReport_SubreportProcessing(对象发送者,SubreportProcessingEventArgs e)。
答案 0 :(得分:0)
我意识到我在这里参加派对已经很晚了,但是在我的搜索过程中出现了这个问题,所以这可能对某些人有帮助。我终于在我的网络应用程序主报告中得到了支持报告。
在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));
}
您还需要确保主报告的子报告具有正确定义的参数和数据以及子报告本身。这适用于我使用带有一个参数的存储过程但我认为一旦正确触发就很容易添加其他参数。我还将子报表数据类型的常规选项设置为Integer(我的sproc期望的类型)并允许空值以及将默认值设置为“指定值”并将其保留为(空)。
当我添加
时,事情终于开始了<SelectParameters>
<asp:Parameter Name="tableId" Type="Int32" />
</SelectParameters>
在我的子报告数据源对象的ObjectDataSource2节点内,您的里程可能会有所不同。