如何在C#中处理子报表后刷新报表?

如何在C#中处理子报表后刷新报表?,c#,report,rdlc,subreport,C#,Report,Rdlc,Subreport,我正在尝试在子报表处理结束后刷新报表。到目前为止,我已经尝试渲染完成事件,但它在子报表处理之前被调用。 我还将reportviewer.RefreshReport放在子报表处理中,但它显示了跨线程运行时错误。 任何建议或代码片段都将非常有用。多谢各位 TDSReportViewer.LocalReport.ReportEmbeddedResource = "MyProject.MyReports.MainPage.rdlc"; TDSReportV

我正在尝试在子报表处理结束后刷新报表。到目前为止,我已经尝试渲染完成事件,但它在子报表处理之前被调用。 我还将reportviewer.RefreshReport放在子报表处理中,但它显示了跨线程运行时错误。 任何建议或代码片段都将非常有用。多谢各位

            TDSReportViewer.LocalReport.ReportEmbeddedResource = "MyProject.MyReports.MainPage.rdlc";
            TDSReportViewer.LocalReport.DataSources.Add(DataSet1);
            TDSReportViewer.LocalReport.SubreportProcessing += new Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(this.reportViewer1_suberport1);
            this.TDSReportViewer.RefreshReport(); 
和用于子报表处理

public void reportViewer1_suberport1(object sender, SubreportProcessingEventArgs e)
{
            else if (e.ReportPath == "SubPage1")
            {
                Report.Page1Data.Clear();
                DataTable dt = Report.Page1Data;
                dt.Rows.Add(databasePathInfo.databasePath + "//DynamicImages", GlobalDataClass.Language, GlobalDataClass.UnitSize, GlobalDataClass.Model, "Model Dimensional Images");
                Microsoft.Reporting.WinForms.ReportDataSource datasource1 = new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dt);
                e.DataSources.Add(datasource1);
            }
}

为什么要在OnSubreportProcessing处理程序中执行刷新?我使用了相同的处理程序来获取子报表的数据,它可以毫无问题地工作。一个技巧是,我猜测e.ReportPath和e.DataSourceNames将获得哪些数据。但是,如果您想显示任何数据,您可以避免这种情况。@Oleska事实上,我的报表中的数据正在更改,我想反映它,直到现在,按“刷新”按钮都已完成。您想在子报表处理中更改主报表数据吗?实际上,在子报表处理中,您所能做的就是为子报表AFAIK提供数据。如果您想获取一些自定义图像(或文本)并在主报表(或子报表)中显示其值,请尝试用C编写特殊的方法,该方法将完成此任务,并从rdl调用它,例如:Namespace.Class.method(“image\u ID”)。您不仅可以填充文本字段,还可以填充图像。实际上,我的完整报表(包括子报表和主报表数据)正在更改。到目前为止,只有通过单击刷新按钮才能反映更改。