2010-10-10 63 views
2

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

我可以让报告在网页上运行并显示得很好。所有的按钮都有图像,报告数据看起来应该与页面上的一致。

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

虽然在网页上观看在Crystal Reports浏览器我得到不同的功能报告,当我尝试每个按钮:

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

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

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

  • JobHistory:该引起是由脚本生成此错误H​​TML] 59无可比拟的遭遇。忽略标签。
  • JobHistory:59 [导致此错误的HTML由脚本生成。]遇到不匹配。忽略标签。

其他项目我已经试过:

  • 删除的Crystal Reports
  • 卸载所有先前版本,然后重新安装水晶报表的beta 2版本
  • 重新启动的从头开始我的解决方案,原来这是从2008年的升级。
  • Cross在Crystal Reports beta 2论坛发布此问题

任何想法或建议,我可以尝试的东西,非常感谢。

回答

2

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

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

要做到这一点,我采取了以下措施,许多这些步骤是萨姆斯那些我在一个相关的问题之前使用,但我已经调整了他们在VS2010看到了新的行为和水晶报表2010:StackOverflow.com: CrystalReportViewer Buttons Broken using MVC Framework

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

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

  • 接下来,我创建报表本身varible,在这种情况下:

JobSummaryByDate summary = new JobSummaryByDate();

注:JobSummaryByDate是当我设计我的报告的Crystal Reports创建的数据类型,它是生成的代码。把它看作你设计的报告需要的所有数据。

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

summary.SetDataSource(body);

  • 最后我我的报告数据存储在会议,并做了回应。重定向到我的aspx页面,其中包含Crystal Reports Viewer

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

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

  • 为JobSummaryByDateView.asp源页面非常striaght前锋,加上水晶报表查看器,在这种情况下,我把它报告查看器的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"]; }

相关问题