在Crystal Report和ASP.NET C#中使用子报表

时间:2015-06-04 06:57:44

标签: c# asp.net crystal-reports crystal-reports-2008 subreport

我的主报告和子报告彼此非常相似,使用相同的参数和公式,唯一的区别是他们在脱轨部分的顺序。现在当我在报表中加载子报表并运行它时,ASP.NET会继续要求输入所用参数的值。

enter image description here

我想我需要一个加载子报告的代码。

 protected void Page_Load(object sender, EventArgs e)
    {        

       report.Load(Server.MapPath("MonthlySalesReportP.rpt"));


        report.SetDatabaseLogon
          ("sa", "pw", @"databasename, "servername");  

        CrystalReportViewer1.ReportSource = report;
        CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
        CrystalReportViewer1.DataBind();
        CrystalReportViewer1.SeparatePages = false;



        report.SetParameterValue(0, MonthLastYear);
        report.SetParameterValue(1, MonthCurrent);
        report.SetParameterValue(2, MonthPrevious);
        report.SetParameterValue(3, RP);
        report.SetParameterValue(4, Loc);
        report.SetParameterValue(5, cms);
        report.SetParameterValue(6, YearCurrent);
        report.SetParameterValue(7, YearPrevious);
        report.SetParameterValue(8, YearLastYear);
        report.SetParameterValue(9, FullName);


}

我是否应该包含阅读子报告所需的代码?

我看到了这个建议

report.SetDataSource(dtproductview);
report.Subreports[0].SetDataSource(dsHeader.Tables[0]);
report.Subreports[1].SetDataSource(dsFooter.Tables[0]);

但我没有数据表或数据集,它直接来自存储过程

1 个答案:

答案 0 :(得分:1)

  1. 您是否尝试将子报表的参数链接到主报表?

    (子报告上下文菜单中的Change subreport links

  2. 您也可以尝试:

    report.Subreports[0].SetParameterValue(0, MonthLastYear);