我正在将示例 MVC 3 应用程序中的代码复制到我的新 MVC 4 应用程序中。代码将报表参数设置为Session,即报表名称和报表数据,然后调用一个.aspx页面,上面只有一个CrystalReportViewer来显示报表:
public class ReportController : Controller
{
public ActionResult Terminal()
{
Session["ReportName"] = "Terminal.rpt";
using (var sqn = new SqlConnection("Data Source=(Local);Initial Catalog=ParkPay;Integrated Security=SSPI;MultipleActiveResultSets=True;"))
{
var adap = new SqlDataAdapter("select * from parkpay.Terminal", sqn);
var dt = new DataTable();
adap.Fill(dt);
Session["ReportData"] = dt;
}
return RedirectToAction("ShowReport", "AspxReportViewer");
}
}
public class AspxReportViewerController : Controller
{
public void ShowReport()
{
Response.Redirect("~/AspxForms/ReportViewer.aspx");
}
}
网络表格:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ReportViewer.aspx.cs" Inherits="ParkPay.Reports.Crystal.AspxForms.ReportViewer" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form" runat="server">
<CR:CrystalReportViewer ID="CrystalReportViewer" runat="server" AutoDataBind="true" />
</form>
</body>
</html>
这两个项目 - 我的和示例 - 几乎相同,但是当我在我的项目上调用诸如终端之类的报告操作时,我得到的只是一个空白页。它上面有一个水晶查看器,这是一个div
完全超出我水平的 JavaScript 方式。
主要工作在 for 后面的代码中完成ReportViewer.aspx
:
protected void Page_Load(object sender, EventArgs e)
{
var reportDoc = new ReportDocument();
var reportName = Session["ReportName"].ToString();
var dataSource = Session["ReportData"] as DataTable;
var reportPath = Path.Combine(Server.MapPath("~/Reports"), reportName);
reportDoc.Load(reportPath);
reportDoc.SetDataSource(dataSource);
CrystalReportViewer.ReportSource = reportDoc;
}
这在示例和我的项目中都是相同的。如果我将我的一份报告复制到示例项目中,它会完美运行。两个 web.config 文件看起来相同。在我的示例报告中没有“特殊”文件。唯一明显的区别是我的项目是一个小型解决方案中的启动项目,其中示例项目是独立的。在一个解决方案中,但只有在那里。
我的可能有什么问题,或者有什么不同?我正在考虑将我所有的报告简单地移动到示例中并从我的项目中调用它。
注意: JavaScript 控制台显示以下错误:
Failed to load resource: the server responded with a status of 404 (Not Found): http://localhost:17441/aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/crv.js
和
Failed to load resource: the server responded with a status of 404 (Not Found): http://localhost:17441/aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/images/style.css
和两个
Uncaught ReferenceError: bobj is not defined: ReportViewer.aspx:56 ReportViewer.aspx:64