MVC中的Crystal Reports

Cha*_*ugh 5 c# asp.net-mvc visual-studio-2010 crystal-reports asp.net-mvc-3

好吧,所以我正在为我工​​作的公司构建一种报告中心,而且很容易就是建立一个基于Web的文件浏览器,现在我正在转向它的报告方面并开始它,我'集成Crystal Reports.我已经从他们的SAP网站上获取了这些文件,但是我遇到了一些问题,

首先,我发现的所有示例都是为了让您必须定义数据源/数据库,并在代码中包含它的登录信息.这是一个问题,因为我们有很多水晶报告,有很多不同的数据库参考,所以我不能只使用一个.事实上,有报道称我们同时使用该引用多个数据库.

其次,我发现的所有示例都表明您必须为每个报告创建一个特定页面.我的目标是能够将报告链接作为变量,并为我们拥有的所有报告创建一个页面.

我看了昨天能找到的一切,但找不到我需要的东西.我也想知道ReportClass.Load函数到底是做什么的.在我能找到的每个例子中都没有注意到我使用它时ReportClass中的任何明显差异.

在搜索时,我找到了一个答案,建议构建一个可以构建Reports的Web表单应用程序,然后使用I-Frame来抓取它,但这是我想要避免的.

所以在审查中:

1)我需要构建Crystal Reports而不必引用数据库

2)我只需要提供.rpt文件的路径,就可以灵活地处理变量Report

3)我希望它在MVC中的单个应用程序中,并避免IFrame

非常感谢你的帮助!!

编辑:我发现了一个适合我的解决方案.我没有使用RAZOR视图,而是使用了ASPX视图,该视图在工具箱中包含Crystal Reports Viewer Tool.为了使它变量我使用了ViewBag.

控制器代码:

[HttpGet]
    public ActionResult Viewer(string Path)
    {
        var sessionID = Session.SessionID;
        ViewBag.Path = newPath;
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

ASPX查看代码:

    <% Report.Report.FileName = ViewBag.Path; %>
    <CR:CrystalReportViewer ID="Viewer" runat="server" AutoDataBind="True" GroupTreeImagesFolderUrl="" Height="100%" ReportSourceID="Report" ToolPanelWidth="200px" Width="100%" />
    <CR:CrystalReportSource ID="Report" runat="server">
        <Report></Report>
    </CR:CrystalReportSource>
Run Code Online (Sandbox Code Playgroud)

rlc*_*ews 0

这里提出了一个“类似”(不准确)的问题。希望这能让您走上正确的道路。