我一整天都试图解决这个问题,但无法使其发挥作用。我有一个水晶报告,我想在运行时传递参数但仍然继续提示参数。以下是我的代码:
public void LoadReport()
{
string studenNo = "A170034511";
ReportDocument cryRpt = new ReportDocument();
string reportName = "StdReport";
cryRpt.Load(Server.MapPath("~/crystalRpts/" + reportName + ".rpt"));
ParameterFields parameterFields = new ParameterFields();
//First Parameter
var parameterField1 = new ParameterField();
var parameterDiscreteValue1 = new ParameterDiscreteValue();
parameterField1.ParameterFieldName = "StudentNo";
parameterDiscreteValue1.Value = studenNo;
parameterField1.CurrentValues.Add(parameterDiscreteValue1);
parameterFields.Add(parameterField1);
//second Parameter
var parameterField2 = new ParameterField();
var parameterDiscreteValue2 = new ParameterDiscreteValue();
parameterField2.ParameterFieldName = "Year";
parameterDiscreteValue2.Value = "2017";
parameterField2.CurrentValues.Add(parameterDiscreteValue2);
parameterFields.Add(parameterField2);
rptViewer.ParameterFieldInfo = parameterFields;
rptViewer.ReportSource = cryRpt;
rptViewer.RefreshReport();
}
有了这些参数窗口仍然显示。我究竟做错了什么。
我到处寻找解决我的问题但没有任何帮助。经过多次尝试,我能够解决问题。以下是我的发现:
以下是适用于我的整个项目的最终代码,包含100多个报告:
public void LoadReport()
{
string studenNo = "A170034511";
ReportDocument cryRpt = new ReportDocument();
string reportName = "StdReport";
cryRpt.Load(Server.MapPath("~/crystalRpts/" + reportName + ".rpt"));
cryRpt.Refresh();
rptViewer.ReportSource = cryRpt;
ParameterFields parameterFields = new ParameterFields();
//First Parameter
var parameterField1 = new ParameterField();
var parameterDiscreteValue1 = new ParameterDiscreteValue();
parameterField1.ParameterFieldName = "StudentNo";
parameterDiscreteValue1.Value = studenNo;
parameterField1.CurrentValues.Add(parameterDiscreteValue1);
parameterFields.Add(parameterField1);
//second Parameter
var parameterField2 = new ParameterField();
var parameterDiscreteValue2 = new ParameterDiscreteValue();
parameterField2.ParameterFieldName = "Year";
parameterDiscreteValue2.Value = "2017";
parameterField2.CurrentValues.Add(parameterDiscreteValue2);
parameterFields.Add(parameterField2);
rptViewer.ParameterFieldInfo = parameterFields;
rptViewer.HasCrystalLogo = false;
rptViewer.Zoom(100);
}
我希望这能帮助很多人和我一样有同样的问题。如果有帮助,请记得投票给答案。