Categories
ASP.NET

ASP.NET, ReportViewer y Firefox

El control ReportViewer no genera el HTML/CSS adecuado para que los reportes se muestren correctamente en Firefox, sin embargo utilizando javascript es posible arreglar un poco la página generada.

Firefox es, desde que pude pagar por mis propios medios una conexión ADSL --a mediados del 2004 aproximadamente 🙂 , el navegador que uso casi para todo; aunque inicialmente me subí al coche sólo por ser Software Libre, ahora sin duda es una herramienta que no puede faltar en mi entorno de desarrollo.

Retomando el tema de la entrada, puesto que generalmente las cosas que salen de Microsoft sólo funcionan bien en Internet Explorer, el control ReportViewer no genera el HTML/CSS adecuado para que los reportes se muestren correctamente en Firefox:

Salida del control ReportViewer en Firefox

Luego de revisar un poco la estructura del documento que genera ese control (gracias a Firebug), pude preparar un pequeño código para que al menos se muestre el reporte completo, las líneas que importan están resaltadas:

html:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
   
    <script type="text/javascript">   

    window.onload=function() {
        window.frames['ReportFrame<%= ReportViewer1.ClientID %>'].
            window.frames['report'].
                document.getElementById('oReportCell').
                    style.width='100%';
    }   

    </script>
   
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="cmdExportar" runat="server" OnClick="cmdExportar_Click" Text="Button" />
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"
            Height="400px" Width="100%">

            <LocalReport ReportPath="Productos.rdlc">
            </LocalReport>
        </rsweb:ReportViewer>
        </div>
       
    </form>
</body>
</html>

Es evidente que este hack sólo funcionará si el reporte está en el mismo servidor que la aplicación Web, esto debido a las restricciones de seguridad que imponen los navegadores sobre los i/frames.

No sé si a alguien más aparte de mi le vaya a servir esta entrada, sólo lo comento por el desazón que tuve durante algunas jornadas de trabajo 😉

5 replies on “ASP.NET, ReportViewer y Firefox”

saludos me interesa saber que puedo hacer para evadir un problema con el report la pagina la he subido al server 2003 y me muestra error cuando quiero visualizar el reporte me sale un Error de servidor en la aplicación '/SetupPedido'.
Error del analizador
Descripción: Error al analizar el recurso requerido para dar servicio a esta solicitud. Revise los detalles de error de análisis específicos y modifique el archivo de código fuente en consecuencia.

Mensaje de error del analizador: No se puede cargar el archivo o ensamblado 'Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ni una de sus dependencias. El sistema no puede hallar el archivo especificado.

Error de código fuente:

Línea 1:
Línea 2:
Línea 3:
Línea 4:
Línea 5:

Archivo de origen: /setuppedido/VerReporte.aspx Línea: 3

Línea 1: %@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="VerReporte.aspx.vb" Inherits="Default2" title="CREANDO REPORTE" %>
Línea 2:
Línea 3: %@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
Línea 4:
Línea 5: %@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

Hola buen dia, no se si me puedan ayudar, mi problema es, tengo un reportviewer de una aplicacion en Visual Studio 2008. mi problema es que no se ven los datos en el internet explorer 6, en 7 si, no se si me puedan ayudar a resolverlo, ya que he estado buscando parches o algo parecido pero aun no he encontrado nada.

Espero alguien pueda apoyarme, Gracias!!
ATTE:
Victor

Para Ejecutar los reportes del ReportViewer en el servidor de produccion se necesitara las siguientes librerias:
Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.WinForms.dll
Microsoft.ReportViewer.WebForms.dll
estas librerias se encuentran en : C:\Archivos de programa\Microsoft Visual Studio 8\ReportViewer
y deberan ser copiadas a la carpeta bin de la aplicacion.

Microsoft.ReportViewer.ProcessingObjectModel.dll
Esta dll se debera copiar en desde la siguiente direccion:C:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel\8.0.0.0__b03f5f7f11d50a3a
para copiarlo debera hacerlo con la conosla de MS-Dos

Comments are closed.