带有本地报告的VS 2017 - 尚未指定报告定义

时间:2017-10-10 13:09:29

标签: reporting-services localreport

我在WinForms应用程序中使用vs2017和ReportViewer 14.0。我之前在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);

没有区别。我总是得到这个:

enter image description here

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

更改

<强> rpt.Refresh();

<强> rpt.RefreshReport();

做了这个伎俩。报告现在正确加载。 Refresh从Control继承并仅使控件无效,但不强制处理和呈现报表。 RefreshReport就是这么做的。

希望这能节省一些时间。