asp.net-mvc-2 - 如何在 MVC.NET 2 中使用 ReportViewer 2010

标签 asp.net-mvc-2 reportviewer ssrs-2008

基本上我想知道如何将报告嵌入到 MVC.Net 2 中。

最佳答案

我做了这个问题,因为网上没有足够的信息,或者信息不完整,所以你可以开始工作。

您必须知道的第一件事是报表查看器是一个 Web 控件,因此您不能在 MVC 上使用它,因此您要做的第一件事是创建一个 Web 表单,以便您可以添加报表查看器。在我完成的示例中,我使用的是 Visual Studio 2010。

网络表单如下所示:

<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>

网络表单背后的代码:

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。

我将同时执行这两项操作,以便您可以对 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 是一个 session 变量,其中包含我们要显示的路径和报告。这也是使用 iframe 嵌入报告的第一种方法

**2/Reporting/Reports.aspx 是我们刚刚制作的 Webform 的路径。这是第二种方式,打开一个新窗口。

在 Controller 中:

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

**1/Reporting/Reports.aspx 是我们刚刚制作的 Webform 的路径。

此外,如果您使用的是 Report Viewer 10,请记住 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>

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

关于asp.net-mvc-2 - 如何在 MVC.NET 2 中使用 ReportViewer 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577118/

相关文章:

asp.net-mvc-2 - 模型绑定(bind)和派生模型类

asp.net-mvc - 新的 MVC2 领域有什么了不起?

c# - Html.Grid 中的复选框值

visual-studio - ReportViewer 控件版本冲突

c# - 参数验证失败。不可能为所有参数提供有效值。 (rsParameterError) sql 报告 2008

ssrs-2008 - ssrs-2008 的布局问题

Javascript 代码不适用于 Chrome 和 firefox,但适用于 IE

asp.net-mvc - ASP.NET MVC 授权,在 IE 中使用 jQuery 和 AJAX 发布

winforms - ReportViewer - LocalReport - 合并报告?

sql-server-2008 - 查询在 SSRS 2008 或 BIDS 2008 中不起作用,但在 SSMS 中起作用