我有一份报告,我想将其显示在网络表单上。没有参数的报告运行良好。带参数的报告让我很头疼。这是我在 BindReport 方法中编写的代码,该代码在表单的页面加载事件上调用。
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("rptPositionwiseMontwiseActualSale.rpt"));
rpt.FileName = Server.MapPath("rptPositionwiseMontwiseActualSale.rpt");
rpt.SetParameterValue("CompanyName", "Cirin Pharmaceutical Pvt. Limited".ToString());
rpt.SetParameterValue("ReportTitle", "PositionWise MonthWise Sales".ToString());
rpt.SetParameterValue("parameters", "Year:2011".ToString());
//CrystalReportViewer1.ParameterFieldInfo = paramFields;
DataSet ds = getReportData();
rpt.SetDataSource(ds.Tables[0]);
CrystalReportViewer1.ReportSource = rpt;
CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
//CrystalReportViewer1.RefreshReport();
我尝试了各种方法,例如将 ParameterFieldInfo 分配给报表查看器控件,但它在页面加载时显示提示,要求提供报表的参数值。我正在使用.NET 4.0。
Edit
我正在使用 Crystal Reports 的推送模型。它是否改变了我们从 asp.net 传递参数以进行报告的方式?
在运行时为 ASP.NET 设置参数值时,我认为您需要做的工作不仅仅是调用SetParameterValue
string rptTitle = "This is Report Title";
rpt.SetParameterValue("ReportTitle", rptTitle);
ParameterDiscreteValue val = new ParameterDiscreteValue();
val.Value = rptTitle;
ParameterValues paramVals = new ParameterValues();
paramVals.Add(val);
rpt.ParameterFields["ReportTitle"].CurrentValues = paramVals;
rpt.DataDefinition.ParameterFields[0].ApplyCurrentValues(paramVals);
这可能有点矫枉过正,但它确实有效,无论如何对我来说都很好。您必须确保参数名称完全匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)