How to use ReportViewer 2010 in MVC.NET 2

后端 未结 1 2063
孤城傲影
孤城傲影 2021-01-01 02:39

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

1条回答
  •  孤独总比滥情好
    2021-01-01 03:26

    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.

    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.

    The webform looks like this:

    
    
        Report Viewer
    
    
        

    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 parameters = new List();
            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();
        }
    }
    

    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:

     **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 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 is the path of the webform we just did eaelier. This is the second way, opening a new window.

    In the Controller:

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

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

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

    
        
          
        
    
    

    Hope all this tutorial helps somebody :)

    0 讨论(0)
提交回复
热议问题