2010-05-08 7 views
9

Ich versuche, den Report Viewer programmatisch innerhalb einer benutzerdefinierten Seite in einem IHttpHandler KontextMicrosoft Reportviewer Web Control Erfordern ein Script

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

Obwohl ich die Scriptmanager auf der Seite hinzugefügt haben platziert zu machen, aber die Laufzeit beschwert sich, dass Der ReportViewer benötigt einen, er löst die folgende Ausnahme aus: p.RenderControl (myWriter) Zeile

Das Report Viewer-Websteuerelement benötigt einen System.Web.UI.ScriptManager im Webformular.

Und das ist die MyPage Klasse

public class MyPage : Page 
{ 

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

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

Jede Hilfe sehr geschätzt werden würde. Dies geschieht auf .NET 4 und ich verwende ReportViewer 2010.

Antwort

2

Der Fehler sieht aus wie das Formular-Tag fehlt während des Renderns. Der ScriptManager benötigt ein Formular-Tag mit einem Runat-Server, um die Aufgabe auszuführen.

Ich würde vorschlagen, dass Sie alle Ihre Steuerelemente der Form-Eigenschaft der Seite hinzufügen. In Sequence und ScriptManager sollte das erste Steuerelement sein.

Ich hoffe, das hilft.

7

In meinem Fall nur die

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

in der aspx Form Quellenmodus und arbeitet

Anweisung setzen !!

Verwandte Themen