2010-05-08 19 views
9

que estoy tratando de hacer que el visor de informes mediante programación dentro de una pagina personalizada colocado en un contexto IHttpHandlerde control Web de Microsoft ReportViewer La exigencia de un 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); 
      } 
     } 

Aunque tengo el ScriptManager añadido a la página, pero el tiempo de ejecución se queja de que el ReportViewer necesita uno, arroja la siguiente excepción en la línea p.RenderControl (myWriter)

El control web del Visor de informes requiere un System.Web.UI.ScriptManager en el formulario web.

Y esta es la clase MiPágina

public class MyPage : Page 
{ 

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

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

Cualquier ayuda sería muy apreciada. Esto se hace en .NET 4 y estoy usando ReportViewer 2010.

Respuesta

2

Parece que falta el código de forma al hacer el Rendering. El ScriptManager requiere una etiqueta de formulario con servidor runat para realizar la tarea.

Sugeriría que agregue todos sus controles a la propiedad Form de la Página. En Sequence y ScriptManager debería ser el primer control.

Espero que esto ayude.

7

En mi caso sólo hay que poner la instrucción

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

en el modo de fuente formulario aspx y funciona !!

Cuestiones relacionadas