2010-08-26 12 views

cevap

9

MVC.Net 2. içine bir rapor nasıl yerleştirileceğini bilmek istiyorum benim yaptığım yeterince web'de bilgi veya bilgi yok çünkü soru Bu tam değil, böylece çalışmaya başlayabilirsiniz.

Bilmeniz gereken ilk şey, rapor görüntüleyicinin bir webcontrol olmasıdır, böylece MVC'de kullanamazsınız, bu yüzden yapmanız gereken ilk şey bir rapor formu ekleyebilmeniz için bir web formu oluşturmaktır.

<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 formu arkasında kod: Şimdi

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

ihtiyacımız örnekte ben Visual Studio web formunu şöyle 2010.

kullanıyorum yaptık MVC'yi kullanmak. İki seçeneğimiz var, javascript ile yeni bir pencere açıp iframe kullanın. Eğer Görünümü hakkında bir iyi bir fikir olabilir hem ben yapacağım

:

<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 yolu ve biz göstermek istiyorum raporu ile bir oturum Değişken olduğunu. Ayrıca bu, bir iframe

** 2 /Reporting/Reports.aspx kullanarak raporun gömülmesini yapmanın ilk yolu, daha önce yaptığımız web formunun yoludur. Bu ikinci yol, yeni bir pencere açılıyor. Kontrolör olarak

:

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

** 1 /Reporting/Reports.aspx biz sadece eaelier yaptığımız Web formunun yoludur. Ayrıca

senin web.config'de bu özelliği unutmayın Report Viewer 10 kullanıyorsanız:

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

Umut tüm bu öğretici O birisine yardım yaptığını birileri :)

+0

yardımcı - Bana. Çok teşekkürler. – Peanut

+1

"Bilmeniz gereken ilk şey, rapor görüntüleyicinin bir webcontrol olmasıdır, böylece MVC'de kullanamazsınız," bu bir battaniye ifadesi olarak yanlıştır. [Web denetimlerini MVC'de çalıştırabilirsiniz.] (Http://blogs.teamb.com/craigstuntz/2009/05/12/38297/) Henüz rapor görüntüleyici ile denemedim. –

+0

bana çok yardımcı oldu. Sağol Sergio. – AEMLoviji