我有一个RDLC报告,其中包含一些子报告。我正在使用LocalReport_SubreportProcessing事件处理所有这些子报告。现在,在这些子报表中,又有一个报表具有其子报表。我不知道如何处理此子报告?

对于主报告,我添加了一个事件。

viewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
    viewer.LocalReport.Refresh();

事件代码
void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
    if (e.ReportPath == "rpt_PSRUserHoursDetail")
    {
        //Code
    }
    else if (e.ReportPath == "rpt_BEnchMiscDetails")
    {

        System.Data.DataTable dtBenchMiscSubReport =DataTable
        ReportDataSource subRptSource = new ReportDataSource("DataSource", dtBenchMiscSubReport);
        e.DataSources.Add(subRptSource);

        (sender as Microsoft.Reporting.WebForms.LocalReport).SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessingBench);

        CommonHelper.DisposeOf(dtBenchMiscSubReport);
    }
}

处理子报表的子报表的代码如下:
void LocalReport_SubreportProcessingBench(object sender, SubreportProcessingEventArgs e)
{
    int intProjectID = 0;
    int int_UserID = 0;

    if (e.Parameters.Count > 0 && e.ReportPath=="SubMiscellaneousTaskReport")
    {
        //get parameter

    }

    DateTime dtCurrentMonth = clsCheckDBNull.ToDate(string.Format("{0}-{1}-{2}", drpYear.SelectedValue, drpMonth.SelectedValue, "01"));
    if (e.ReportPath == "SubMiscellaneousTaskReport")
    {
        System.Data.DataTable dt = DataTable
        ReportDataSource subRptSource = new ReportDataSource("Dataset1", dt);
        e.DataSources.Add(subRptSource);
    }
}

最佳答案

@chirag Fanse:子报告本身就是报告。当您有一个子报告(例如B)的一个子报告(例如A)时,那么B将成为您的主报告,而A将成为子报告。这样您就可以像查看子报表一样

if (e.ReportPath == "A")

和其余的事情将是相同的。

关于asp.net - 如何处理rdlc中子报表的子报表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17715245/

10-10 06:08