0

我在 WinForms 应用程序中使用带有 ReportViewer 14.0 的 vs2017。我以前在以前的 VS 版本中做过这个,没有任何问题,我很惊讶为什么这次我不能做这个工作。

这是我到目前为止所做的:

  • 我在位于应用程序根目录的 Reports 文件夹中创建了一个报告 (RDLC)。
  • 我将 BuildAction 设置为 None 并复制到输出目录以复制(如果较新)
  • 在一个新表单中,我放置了 ReportViewer 组件(称为 rpt)
  • 我将处理模式设置为本地
  • 在表单的 Load 事件中,我运行以下代码:

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);

没有不同。我总是得到这个:

在此处输入图像描述

我已经盯着这个看了几个小时了,在我的一生中,我无法弄清楚我做错了什么。任何帮助将不胜感激。

谢谢你。

4

1 回答 1

1

我现在觉得很愚蠢,但是作为对面临相同问题的任何人的参考,我在这里发布了解决方案。

改变

rpt.Refresh();

rpt.RefreshReport();

成功了。报告现在可以正确加载。Refresh 继承自 Control,只会使控件无效,但不会强制处理和呈现报表。RefreshReport 就是这样做的。

希望这可以为某人节省一些时间。

于 2017-10-10T13:25:38.167 回答