2010-08-26 20 views

Respuesta

9

me hizo la pregunta, porque no hay suficiente información en la web, o la información no es tan completo para que pueda comenzar a trabajar.

Lo primero que debe saber es que el visor de informes es un control web, por lo que no puede usarlo en MVC, entonces lo primero que debe hacer es crear un formulario web para poder agregar el visor de informes. En el ejemplo que he hecho estoy usando Visual Studio 2010.

El formulario web es el siguiente:

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

El código detrás del formulario web:

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(); 
    } 
} 

Ahora necesitamos usar el MVC. Tenemos dos opciones una, abrir una nueva ventana con una ventana emergente de JavaScript o usar un iframe.

voy a hacer ambas cosas para que pueda tener una mejor idea sobre el Vista:

<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 es una variable de sesión con la ruta y el informe que queremos mostrar. También esta es la primera forma de hacer incrustar el informe usando un iframe

** 2 /Reporting/Reports.aspx es la ruta del formulario web que acabamos de hacer. Esta es la segunda manera, abrir una nueva ventana.

En el controlador:

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

** 1 /Reporting/Reports.aspx es el camino del formulario web que acabamos de hacer eaelier.

También si su están utilizando Visor de informes 10 recuerde esta característica en el 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> 

la esperanza de todo este tutorial ayuda a alguien :)

+0

Se hizo ayudar a alguien - yo. Muchas gracias. – Peanut

+1

En relación con "Lo primero que debe saber es que el visor de informes es un control web, por lo que no puede usarlo en MVC", esto es incorrecto como una declaración general. [Puedes hacer que los controles web funcionen en MVC.] (Http://blogs.teamb.com/craigstuntz/2009/05/12/38297/). Sin embargo, todavía no lo he probado con el visor de informes. –

+0

me ayudó mucho. Gracias, Sergio. – AEMLoviji

Cuestiones relacionadas