如何使用2010的ReportViewer在MVC.NET 2 [英] How to use ReportViewer 2010 in MVC.NET 2

查看:240
本文介绍了如何使用2010的ReportViewer在MVC.NET 2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本上我想知道如何嵌入一个报表分成MVC.Net 2

Basically I want to know how to embed a report into MVC.Net 2.

推荐答案

我做的问题,因为没有在网络上足够的信息,或者信息不完全是这样你就可以开始工作。

I did the question, because there's not enough information on the web, or the information is not that complete so you can start working.

你必须知道的第一件事是,该报告Viewer是一个三夏所以你不能用它MVC的,所以你要做的第一件事是创建一个Web表单,所以你可以添加报表查看器。在这个例子中我已经做了我使用的Visual Studio 2010。

The first thing you have to know is that the report viewer is a webcontrol so you can't use it on MVC, so first thing you have to do is create a web form so you can add the report viewer. In the example I've done I'm using Visual Studio 2010.

WebForm的看起来是这样的:

The webform looks like this:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Report Viewer</title>
</head>
<body>
    <div style="width: auto;">
        <form id="form1" runat="server" style="width: 100%; height: 100%;">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <rsweb:ReportViewer ID="rptViewer" runat="server" Width="100%" Height="100%" AsyncRendering="False"
            SizeToReportContent="True">
        </rsweb:ReportViewer>
        </form>
    </div>
</body>
</html>

Web表单背后的code:

The code behind of the web form:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var reportServer = ConfigurationManager.AppSettings["ReportServer"].ToString();
        var reportPath = ConfigurationManager.AppSettings["ReportPath"].ToString();

        rptViewer.ServerReport.ReportServerUrl = new Uri(reportServer);
        rptViewer.ShowToolBar = false;
        rptViewer.ServerReport.ReportPath = reportPath + Request.QueryString["ReportName"];
        List<ReportParameter> parameters = new List<ReportParameter>();
        string[] keys = Request.QueryString.AllKeys;
        for (int i = 1; i < Request.QueryString.Count; i++)
        {
            parameters.Add(new ReportParameter(keys[i], Request.QueryString[i]));
        }
        this.ReportViewer1.ServerReport.SetParameters(parameters);
        this.ReportViewer1.ProcessingMode = ProcessingMode.Remote;
        this.ReportViewer1.ShowParameterPrompts = false;
        this.ReportViewer1.ShowPromptAreaButton = false;
        this.ReportViewer1.ServerReport.Refresh();

        rptViewer.ProcessingMode = ProcessingMode.Remote;
        rptViewer.ServerReport.Refresh();
    }
}

现在,我们需要使用MVC。我们有两个选项,打开与JavaScript的一个新窗口弹出或使用iframe。

Now we need to use the MVC. We have two options one, open a new window with a javascript pop up or use an iframe.

我会做两个这样你就可以对查看一个最好的主意:

I will do both so you can have a best idea on the View:

<iframe id="Frame1" src="<%= Session["Url"] %>" width="230" height="230" frameborder="0"></iframe> **1
 function OpenReports(name) {
            var width = (screen.availWidth - 700).toString();
            var height = (screen.availHeight - 100).toString();
            window.open('/Reporting/Reports.aspx?ReportName=' + name,
                 'mywindow', 'width=' + width + ',height=' + height + ',toolbar=no,location=no,directories=yes,status=no,' +
                'menubar=no,scrollbars=yes,copyhistory=yes,resizable=yes' + ',screenX=0,screenY=0,left=0,top=0');

        } **2

** 1 SessionURL是一个会话变量有我们要显示的路径和报告。另外这是做嵌入使用iframe报告中的第一种方式

**1 SessionURL is a Session Variable with the path and report we want to show. Also this is the first way to do embed the Report using an iframe

** 2 /Reporting/Reports.aspx是我们刚刚做eaelier网络表单的路径。这是第二种方式,打开一个新窗口。

**2 /Reporting/Reports.aspx is the path of the webform we just did eaelier. This is the second way, opening a new window.

在控制器:

 public ActionResult ViewName()
 {
    Session["Url"] = "/Reporting/Reports.aspx?ReportName=Report44";
    return View();
 }**1

** 1 /Reporting/Reports.aspx是我们刚刚做eaelier网络表单的路径。

**1 /Reporting/Reports.aspx is the path of the webform we just did eaelier.

此外,如果您使用的是报告查看器10,请记得在web.config此功能:

Also If your are using Report Viewer 10 please remember this feature in the web.config:

<system.web>
    <httpHandlers>
      <add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </httpHandlers>
</system.web>

所有希望本教程帮助某人:)

Hope all this tutorial helps somebody :)

这篇关于如何使用2010的ReportViewer在MVC.NET 2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆