我正在从存储过程创建crytal报告,当我传递一个参数但它显示错误时,这工作正常
"不正确的参数"
当我传递两个参数我的代码是
{
ReportDocument reportDocument = new ReportDocument();
ParameterField paramField = new ParameterField();
ParameterFields paramFields = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@Dept";
paramDiscreteValue.Value = TextBox1.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
paramField.Name = "@Name";
paramDiscreteValue.Value = TextBox2.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
}
Run Code Online (Sandbox Code Playgroud)
请让我知道任何变化
您需要为这两个参数创建新的parameterField和value.您当前的代码添加参数,修改它(更改名称和值)并再次添加相同的对象.这应该是正确的:
{
ReportDocument reportDocument = new ReportDocument();
ParameterFields paramFields = new ParameterFields();
// ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@Dept";
paramDiscreteValue.Value = TextBox1.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
paramField = new ParameterField(); // <-- This line is added
paramDiscreteValue = new ParameterDiscreteValue(); // <-- This line is added
paramField.Name = "@Name";
paramDiscreteValue.Value = TextBox2.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
Run Code Online (Sandbox Code Playgroud)
}
编辑: 注释中提到的错误可能是因为代码中有两个变量paramField或paramDiscreteValue的定义.在一个c#方法中,您不能多次定义具有相同名称的变量.尝试编写上面的代码,如果仍然遇到编译器错误,请在此处粘贴完整的错误文本.
试试这个更简洁
{
ReportDocument reportDocument = new ReportDocument();
reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetParameterValue("@Dept", TextBox1.Text.ToString());
reportDocument.SetParameterValue("@Name", TextBox2.Text.ToString());
// CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39801 次 |
| 最近记录: |