C#中为Crystal Report传递参数不生效,运行时反复提示输入参数
C# Crystal Report传参不生效问题解决方案
核心问题原因
现有代码执行顺序存在错误:先将报表对象绑定到查看器,再设置参数,最后调用的Refresh()方法会清空已设置的参数,触发参数重新校验,导致弹出参数输入框。
修复步骤
- 调整代码执行顺序:先完成报表加载、参数赋值,再绑定到报表查看器,移除绑定后的
Refresh()调用 - 核对参数名:确保
SetParameterValue传入的参数名,和rpt文件内定义的参数名完全一致,包括大小写、@前缀是否匹配 - 可选配置:关闭查看器的自动参数提示开关,避免参数匹配异常时弹出输入框
修正后代码
ReportDocument reportDocument = new ReportDocument(); string rpt = "Report1.rpt"; string reportFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string reportPath = Path.Combine(reportFolder, rpt); // 先加载报表 reportDocument.Load(reportPath); // 再设置参数 reportDocument.SetParameterValue("@product_id", 11007); // 最后绑定到查看器 crystalReportViewer1.ReportSource = reportDocument; // 可选:关闭自动参数弹窗提示 // crystalReportViewer1.EnableParameterPrompt = false;
原错误界面截图

内容的提问来源于stack exchange,提问作者Masi
相关产品推荐
相关产品推荐

