【问题标题】:VS 2017 with Local reports - The report definition has not been specified带有本地报告的 VS 2017 - 尚未指定报告定义
【发布时间】:2018-03-21 21:54:09
【问题描述】:

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

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

我已经盯着这个看了好几个小时了,我这辈子都不知道我做错了什么。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: reporting-services localreport


    【解决方案1】:

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

    变化

    rpt.Refresh();

    rpt.RefreshReport();

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

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

    【讨论】:

    • 你能把这个标记为答案,这样人们就不会通过这个来尝试解决它吗?
    • 我还不能。它说我必须再等 2 天。
    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多