Migré nuestros servicios de informes de la versión 2008 a otra versión de servidor 2008 R2. En la versión 2008, los informes funcionan bien en Safari. La nueva versión 2008 R2 los informes no aparecen en absoluto. Todo lo que veo es la sección de parámetros y luego el informe está en blanco. Lo mismo en Chrome. De acuerdo con Microsoft Safari, se admite aunque de forma limitada. Los informes no son complejos. De hecho, creé un informe que solo tenía una línea para ver si aparecería en Safari, pero no, ese informe también está completamente en blanco. ¿Alguien hizo que los informes de SSRS fueran visibles en Safari? ¿Tengo que meterme con algún tipo de ajuste de configuración?
84
Respuestas:
Solución definitiva (¡también funciona en SSRS 2012!)
Agregue la siguiente secuencia de comandos al siguiente archivo (en el servidor SSRS)
C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js
function pageLoad() { var element = document.getElementById("ctl31_ctl10"); if (element) { element.style.overflow = "visible"; } }
Nota : Como señaló azzlak, el nombre del div no siempre es
ctl31_ctl10
. Para SQL 2012 intentectl32_ctl09
y para 2008 R2 intentectl31_ctl09
. Si esta solución no funciona, mire el HTML de su navegador para ver si el script ha funcionado correctamente cambiando laoverflow:auto
propiedad aoverflow:visible
.Solución para el control ReportViewer
Inserte en la
.aspx
página (o en un.css
archivo vinculado , si está disponible) esta línea de estilo#reportViewer_ctl09 { overflow:visible !important; }
Razón
Chrome y Safari se renderizan
overflow:auto
de manera diferente con respecto a IE.La página HTML producida por los informes de SSRS 2008 R2 contiene un
div
que tieneoverflow:auto
estilo y convierte el informe en un informe invisible.<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Puedo ver informes en Chrome cambiando manualmente
overflow:auto
aoverflow:visible
en la página web producida usando las herramientas de desarrollo de Chrome ( F12).Me encanta la solución de Tim , es fácil y funciona.
Pero todavía hay un problema: cada vez que el usuario cambia los parámetros (¡mis informes usan parámetros!) AJAX actualiza el div, la etiqueta overflow: auto se reescribe y ningún script lo cambia.
Este detalle de la nota técnica explica cuál es el problema:
El usuario einarq sugirió esta solución :
Entonces escribió el script mejorado que se muestra en la solución.
fuente
ctl32_ctl09
.Solo incluye
SizeToReportContent="true"
como se muestra a continuaciónfuente
Estoy usando Chrome versión 21 con SQL 2008 R2 SP1 y ninguna de las correcciones anteriores funcionó para mí. A continuación se muestra el código que funcionó, como con las otras respuestas, agregué este código para agregar a "C: \ Archivos de programa \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js" (en el servidor SSRS):
fuente
Este es un problema conocido . El problema es que una etiqueta div tiene el estilo "overflow: auto" que aparentemente no está bien implementado con WebKit, que es utilizado por Safari y Chrome (ver la respuesta de Emanuele Greco). No supe cómo aprovechar la sugerencia de Emanuele de usar el elemento RS: ReportViewerHost, pero lo resolví usando JavaScript.
Problema
Solución
Dado que "overflow: auto" se especifica en el atributo de estilo del elemento div con id "ctl31_ctl10", no podemos anularlo en un archivo de hoja de estilo, así que recurrí a JavaScript. Agregué el siguiente código a "C: \ Archivos de programa \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js"
Nota
Parece haber una solución para SSRS 2005 que no he probado, pero no creo que sea aplicable a SSRS 2008 porque no puedo encontrar la clase "DocMapAndReportFrame".
fuente
Mi solución basada en las ideas anteriores.
No se limita a una determinada identificación y no es necesario que incluya ninguna otra biblioteca como jQuery.
fuente
Aquí está la solución que utilicé para Report Server 2008 R2
Debería funcionar independientemente de lo que generará el servidor de informes para su uso en su atributo "id" de la tabla. No creo que siempre puedas asumir que será "ctl31_fixedTable"
Usé una combinación de la sugerencia anterior y algunas formas de cargar dinámicamente bibliotecas jquery en una página desde el archivo javascript que se encuentra aquí
En el servidor, vaya al directorio: C: \ Archivos de programa \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js
Copie la biblioteca jquery jquery-1.6.2.min.js en el directorio
Cree una copia de seguridad del archivo ReportingServices.js Edite el archivo. Y agregue esto al final de la misma:
fuente
Puede solucionar esto fácilmente con jQuery, y un pequeño truco feo :-)
Tengo una página asp.net con un control de usuario ReportViewer.
En el evento de documento listo, luego inicio un temporizador y busco el elemento que necesita la corrección de desbordamiento (como publicaciones anteriores):
Mejor que asumir que tiene cierta identificación. Puede ajustar el temporizador a lo que quiera. Lo configuré en 1000 ms aquí.
fuente
Para su información, nada de lo anterior funcionó para mí en 2012 SP1 ... una solución simple fue incrustar credenciales en la fuente de datos compartida y luego decirle a Safari que confíe en el sitio del servidor SSRS. ¡Entonces funcionó muy bien! Tomó días persiguiendo supuestas soluciones como las anteriores solo para descubrir que la seguridad integrada no funcionará de manera confiable en Safari: tiene que meterse con el llavero en la Mac y luego aún no funcionaría de manera confiable.
fuente
La solución proporcionada por Emanuele funcionó para mí. Pude ver el informe cuando accedí a él directamente desde el servidor, pero cuando usé un control ReportViewer en mi página aspx, no pude ver el informe. Al inspeccionar el HTML renderizado, encontré un div con la identificación "ReportViewerGeneral_ctl09" ( ReportViewerGeneral es la identificación del servidor del control del visor de informes) que tenía su propiedad de desbordamiento establecida en auto.
Usé el procedimiento explicado por Emanuele para cambiar esto a visible de la siguiente manera:
fuente
He usado esto. Agregue una referencia de script a jquery en la página Report.aspx. Utilice lo siguiente para vincular JQuery a los eventos de microsoft. Usé un poco de la sugerencia de Eric para configurar el desbordamiento.
fuente