2010-05-08 9 views
9

Sto cercando di rendere il visualizzatore di report a livello di codice all'interno di una pagina personalizzata collocato in un contesto IHttpHandlerMicrosoft ReportViewer Web Control richiedono uno ScriptManager

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

Anche se ho la ScriptManager aggiunto alla pagina, ma il runtime lamenta che il ReportViewer ne ha bisogno, getta la seguente eccezione alla riga p.RenderControl (myWriter)

Il Web Viewer visualizzatore report richiede un System.Web.UI.ScriptManager nel modulo Web.

E questa è la classe MyPage

public class MyPage : Page 
{ 

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

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

Qualsiasi aiuto sarebbe molto apprezzato. Questo è fatto su .NET 4 e sto usando ReportViewer 2010.

risposta

2

L'errore sembra che il tag form manchi mentre si esegue il rendering. ScriptManager richiede un tag form con il server runat per eseguire l'attività.

Suggerirei di aggiungere tutti i controlli alla proprietà Form della Pagina. In Sequence e ScriptManager dovrebbe essere il primo controllo.

Spero che questo aiuti.

7

Nel mio caso appena messo l'istruzione

<%@ 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 modalità sorgente modulo aspx e funziona !!

Problemi correlati