ASP.NET MVC VS2010 Crystal Reports Beta 2 无法打印、导出、缩放或更改页面

2023-12-14

我刚刚升级到 Visual Studio 2010 的 Crystal Reports beta 2,在 ASP.NET MVC 应用程序中使用 Web 控件时无法打印、导出、缩放或更改页面。

我可以让报告运行并在网页上正常显示。所有按钮都有图像,并且报告数据看起来与页面上应有的完全一样。

在 VS2010 中,当查看 .rpt 时,我可以单击“报告预览”并让报告运行并打印、导出、缩放等...这似乎使用 Windows 控件而不是 Web 控件来呈现报告。因此我相信我的报告文件本身是有效的。

在网页上的 Crystal Reports Viewer 中查看报表时,当我尝试每个按钮时,我会得到不同的功能:

  • 打印:单击打印按钮一次,报告返回到 Web 服务器,重新运行报告,但随后返回到网页,不执行任何操作。再次按下它,它会打开一个新选项卡,该新选项卡中包含相同的报告。
  • 导出:导出会打开对话框,询问我要导出为哪种格式。一旦我做出选择,它就会执行与 print 相同的功能,进入后端,然后什么也不做。再次按“导出”将打开一个包含报告的新选项卡。
  • 缩放/更改页面 - 这两个选项都会弹出一个对话框、一个微调器,然后冻结页面。

无论我使用哪种浏览器(IE、Chrome、Mozilla),我都会得到相同的行为,并且所有浏览器都关闭了弹出窗口阻止程序。

使用 Chrome 的开发者工具,我在页面上收到两个错误:

  • JobHistory:59[导致此错误的 HTML 是由脚本生成的。] 遇到不匹配的情况。忽略标签。
  • JobHistory:59[导致此错误的 HTML 是由脚本生成的。] 遇到不匹配的情况。忽略标签。

我尝试过的其他项目:

  • 删除了所有以前版本的 Crystal Reports
  • 卸载并重新安装 Crystal Reports beta 2
  • 从头开始重新启动我的解决方案,最初它是 2008 年的升级。
  • Cross 在 Crystal Reports beta 2 论坛上发布了这个问题

对于我可以尝试的任何想法或建议,我们将不胜感激。


Crystal Report 的报表查看器控件是服务器端控件,因此,当它是 MVC 视图页面的一部分时,它无法正常工作。因此,当我尝试打印或导出并导致回发时,我会不断看到页面刷新,而不是打印或导出。

此行为与我在 Visual Studio 2008 中使用的 ASP.NET MVC 版本 1 以及 VS2008 附带的 Crystal Reports 版本不同。在 VS2010 以及 Crystal Reports 2010 的 Beta 版中,报表查看器控件需要位于普通的旧 aspx 页面上,而不是 MVC 视图页面的一部分。

为了实现这一点,我采取了以下步骤,其中许多步骤与我之前在相关问题中使用的步骤相同,但我针对 VS2010 和 CrystalReports 2010 中看到的新行为对它们进行了调整:StackOverflow.com:使用 MVC 框架损坏 CrystalReportViewer 按钮

  • 在我的控制器中,我对模型进行正确的调用以获取报告数据,

List<JobSummaryBody> body = model.GetJobSummaryBody(jobId, startDate, endDate);

  • 接下来,我为报告本身创建一个变量,在本例中:

JobSummaryByDate summary = new JobSummaryByDate();

注意:JobSummaryByDate是我设计报表时由Crystal Reports创建的数据类型,它是代码生成的。将其视为您设计的报告所需的所有数据。

  • 接下来,我为刚刚创建的报告设置数据源、行数据

summary.SetDataSource(body);

  • 最后,我将报告数据存储在会话中,并执行 Response.Redirect 到包含 Crystal Reports Viewer 的 aspx 页面

Session["ReportData"] = summary; Response.Redirect("~/CrystalReports/JobSummaryByDateView.aspx");

注意:我在项目中创建了一个名为“CrystalReports”的新顶级文件夹,实际上可以通过 URL 导航到该文件夹​​。

  • JobSummaryByDateView.asp 的源页面非常简单,添加了 Crystal Report Viewer,在本例中我给了它一个 Report Viewer 的 ID:

    <CR:CrystalReportViewer ID="ReportViewer" runat="server" AutoDataBind="true" EnableDatabaseLogonPrompt="False" EnableParameterPrompt="False" ToolPanelView="None" HasDrilldownTabs="False" HasDrillUpButton="False" HasSearchButton="False" HasToggleGroupTreeButton="False" HasToggleParameterPanelButton="False" ReuseParameterValuesOnRefresh="True" />

  • 最后,在代码隐藏页面上,我将 ReportViewer.ReportSource 设置为我在控制器中生成的报告数据:

protected void Page_Init(object sender, EventArgs e) { ReportViewer.ReportSource = Session["ReportData"]; }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC VS2010 Crystal Reports Beta 2 无法打印、导出、缩放或更改页面 的相关文章

随机推荐