2010-05-08 18 views
9

Bir IHttpHandler bağlamındaScriptManager gerektiren Microsoft ReportViewer Web Denetimi

ReportViewer rv = new ReportViewer(); 
ReportDataSource rds = new ReportDataSource(); 
rds.Name = "Report"; 
rv.LocalReport.ReportPath = "Report.rdlc"; 

rds.Value = SomeReportObject; 

rv.LocalReport.DataSources.Add(rds); 
rv.LocalReport.Refresh(); 

ScriptManager scriptHandler = new ScriptManager(); 
MyPage p = new MyPage(); 
p.Controls.Add(scriptHandler); 
p.Controls.Add(rv); 

using (TextWriter myTextWriter = new StringWriter()) 
     { 
      using (HtmlTextWriter myWriter = new HtmlTextWriter(myTextWriter)) 
      { 
       p.RenderControl(myWriter); 
      } 
     } 

yerleştirilmiş bir özel Sayfa içinde rapor görüntüleyici programsal olarak render etmeye çalışıyorum ScriptManager sayfaya eklenmiş olsa da, ancak çalışma zamanı ReportViewer bir ihtiyacı olduğunu şikayet ediyor, aşağıdaki atar p.RenderControl (myWriter) satırında istisna

Rapor Görüntüleyici Web Denetimi, web formunda bir System.Web.UI.ScriptManager gerektirir.

Ve bu MyPage Sınıfıdır

public class MyPage : Page 
{ 

    public override void VerifyRenderingInServerForm(Control control) 
    { 
     //Empty Method 
    } 

    public override bool EnableEventValidation 
    { 
     get { return false; } 
     set { /* Do nothing */} 
    } 
} 

Herhangi bir yardım çok takdir edilecektir. Bu .NET 4 üzerinde yapılır ve ReportViewer 2010 kullanıyorum.

cevap

2

Hata, Rendering yapılırken Form Etiketi eksik gibi görünüyor. ScriptManager, görevi gerçekleştirmek için runat sunuculu bir Form Tag gerektirir.

Tüm denetimlerinizi Sayfa'nın Form özelliğine eklemenizi öneririm. Sırada ve ScriptManager ilk kontrol olmalıdır.

Umarım bu yardımcı olur. Benim durumumda

7

sadece talimat aspx formu kaynak modunda

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 

koymak ve çalışır !!

İlgili konular