我在WinForms应用程序中使用vs2017和ReportViewer 14.0。我之前在VS的早期版本中做过这个,没有任何问题,我很惊讶为什么这次我不能做这个工作。
这是我到目前为止所做的:
string path = AppDomain.CurrentDomain.BaseDirectory + @"Reports\Report.rdlc";
rpt.LocalReport.ReportPath = path;
rpt.LocalReport.SetParameters(new ReportParameter("parTitle", Title));
rpt.LocalReport.DataSources.Add(new ReportDataSource("ds", Data));
rpt.Refresh();
当我运行应用时,表单会加载,但ReportViewer会显示一条消息:尚未指定报告定义
我还尝试将构建操作设置为EmbeddedResource并使用:
rpt.LocalReport.ReportEmbeddedResource = "Project.Reports.Report.rdlc";
结果相同。我甚至尝试过:
Assembly a = Assembly.GetExecutingAssembly();
Stream report = a.GetManifestResourceStream("Project.Reports.Report.rdlc");
rpt.LocalReport.LoadReportDefinition(report);
没有区别。我总是得到这个:
我现在已经盯着这几个小时了,对于我的生活,我无法弄清楚我做错了什么。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:1)
我现在觉得很愚蠢,但作为对任何面临同一问题的人的参考,我在这里发布解决方案。
更改
<强> rpt.Refresh(); 强>
到
<强> rpt.RefreshReport(); 强>
做了这个伎俩。报告现在正确加载。 Refresh从Control继承并仅使控件无效,但不强制处理和呈现报表。 RefreshReport就是这么做的。
希望这能节省一些时间。