2010-08-26 8 views

Répondre

9

J'ai fait la question, parce qu'il n'y a pas assez d'informations sur le Web, ou les informations n'est pas complet, donc vous pouvez commencer à travailler. La première chose que vous devez savoir est que la visionneuse de rapports est un webcontrol donc vous ne pouvez pas l'utiliser sur MVC, donc la première chose à faire est de créer un formulaire web pour pouvoir ajouter la visionneuse de rapports. Dans l'exemple que je l'ai fait, je suis en utilisant Visual Studio 2010.

WebForm ressemble à ceci:

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

Le code derrière le formulaire 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(); 
    } 
} 

Maintenant, nous avons besoin utiliser le MVC. Nous avons deux options, ouvrir une nouvelle fenêtre avec un pop-up javascript ou utiliser un iframe.

Je ferai tous les deux afin que vous puissiez avoir une meilleure idée sur la vue:

<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 est une variable de session avec le chemin et le rapport que nous voulons montrer. C'est aussi la première façon de faire le rapport en utilisant un iframe

** 2 /Reporting/Reports.aspx est le chemin du webform que nous venons de faire. C'est la deuxième façon, en ouvrant une nouvelle fenêtre.

Dans le contrôleur:

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

** 1 /Reporting/Reports.aspx est le chemin du formulaire en ligne, nous venons de faire eaelier.

également Si que vous utilisez Report Viewer 10 s'il vous plaît rappelez-vous cette fonctionnalité dans le 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> 

espère que tout ce tutoriel aide quelqu'un :)

+0

Il a aidé quelqu'un - moi. Merci beaucoup. – Peanut

+1

Concernant "La première chose que vous devez savoir est que la visionneuse de rapports est un webcontrol donc vous ne pouvez pas l'utiliser sur MVC", c'est incorrect comme une instruction générale. [Vous pouvez faire fonctionner les contrôles Web dans MVC.] (Http://blogs.teamb.com/craigstuntz/2009/05/12/38297/) Je ne l'ai pas encore essayé avec le visualiseur de rapports. –

+0

cela m'a beaucoup aidé. Merci, Sergio. – AEMLoviji