带有本地报告的 VS 2017 - 尚未指定报告定义
VS 2017 with Local reports - The report definition has not been specified
我在 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);
没有区别。我总是得到这个:
我已经盯着这个看了好几个小时了,我这辈子都不知道自己做错了什么。任何帮助将不胜感激。
谢谢。
我现在觉得自己很傻,但是为了给遇到同样问题的人一个参考,我在这里发布了解决方案。
改变
rpt.Refresh();
至
rpt.Refresh报告();
成功了。报告现在可以正确加载。 Refresh继承自Control,只使控件失效,不强制处理和渲染报表。 RefreshReport 就是这样做的。
希望这可以节省一些时间。
我在 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);
没有区别。我总是得到这个:
我已经盯着这个看了好几个小时了,我这辈子都不知道自己做错了什么。任何帮助将不胜感激。
谢谢。
我现在觉得自己很傻,但是为了给遇到同样问题的人一个参考,我在这里发布了解决方案。
改变
rpt.Refresh();
至
rpt.Refresh报告();
成功了。报告现在可以正确加载。 Refresh继承自Control,只使控件失效,不强制处理和渲染报表。 RefreshReport 就是这样做的。
希望这可以节省一些时间。