0

我正在研究关于 VS2012 的 RDLC 报告

当我尝试在子报表上添加参数时,我的报表无法正常工作,并且出现此错误“错误:无法显示子报表”。</p>

在添加参数之后,甚至不会调用此事件 LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)。

4

1 回答 1

0

我意识到我在这里聚会迟到了,但是在我的搜索过程中出现了这个问题,所以也许这会对某人有所帮助。我终于在我的 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));
}

您还需要确保主报表的子报表以及子报表本身具有正确定义的参数和数据。这适用于我使用带有一个参数的存储过程,但我认为一旦正确触发就很容易添加额外的参数。我还将我的子报表数据类型的常规选项设置为整数(我的 sproc 所期望的类型)并允许空值以及将默认值设置为“指定值”并将其保留为 (Null)。

当我添加时,事情终于开始起作用了

<SelectParameters>
    <asp:Parameter Name="tableId" Type="Int32" />
</SelectParameters>

在我的子报表数据源对象的 ObjectDataSource2 节点内,您的里程可能会有所不同。

于 2013-04-01T04:39:30.163 回答