Reporte vom Report Manager in Browsern richtig anzeigen

Authors: Thorsten Huss

Während der Arbeit an einigen neuen Reports stellten wir fest, dass sie im Report Manager der Microsoft SQL Server Reporting Services (SSRS) ohne Inhalt im Browser dargestellt wurden. In diesem Fall sollten die SSRS Reports auf dem iPad im Safari Browser dargestellt werden. Wie sich später zeigte, sind auch diverse andere Browser von diesem Phänomen betroffen, lediglich beim Internet Explorer wurde es nicht festgestellt.

Reporte vom Report Manager in Browsern richtig anzeigen 

 

 

 

 

 

 

 

 

 

 

Erste Recherchen zu diesem Problem führten zu folgendem Link:
http://stackoverflow.com/questions/5968082/ssrs-2008-r2-ssrs-2012-reports-are-blank-in-safari-and-chrome?rq=1

Die Reports funktionierten im Internet Explorer wohl nur – ohne in Details zu gehen – da der Fehler durch den sogenannten Quirks Mode (eine von Microsoft eingesetzte Technik zur Rückwärtskompatibilität) unbeabsichtigt zur Laufzeit umgangen wird.

Die anderen getesteten Browser interpretieren die CSS-Eigenschaften hingegen richtig, wodurch ein bestimmtes HTML-Element der Seite die Eigenschaft „Overflow = auto“ besitzt, während gleichzeitig die Höhe des Elements mit 0 Pixeln angegeben wird. Reporte vom Report Manager in Browsern richtig anzeigen

Mit diesen standardmäßigen Werten werden alle Inhalte, die über die Größe des Elements hinausgehen – also alle mit mind. 1 Pixel Höhe – abgeschnitten. Damit die Reports tatsächlich angezeigt werden, muss die Overflow-Eigenschaft dieses Elementes auf „visible“ gesetzt werden.

Ein möglicher Weg ist in obigem Link beschrieben. Unter den Microsoft SQL Server Programmdateien (der Pfad entspricht ungefähr C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager\js) befindet sich eine Javascript-Datei namens ReportingServices.js. Um das Element anzusteuern und den neuen Eigenschaftswert anzuwenden, kann einfach folgendes Script an das Ende dieser Datei angehangen werden:

function pageLoad()

{if (navigator.appName != “Microsoft Internet Explorer”)

{var element = document.getElementById(“ctl32_ctl09″);

if (element){element.style.overflow = “visible”;}

}

};

Diese Funktion wird beim Rendern des Reports ausgeführt und setzt den Overflow-Wert auf visible. Eine etwas elegantere Lösung, die ohne das häufig blockierte JavaScript auskommt, ist den CSS-Code zu ändern, der dieser Seite zugrunde liegt.

Dazu fügt man an die Datei ReportingServices.css im Pfad C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager\Styles folgendes an:

#ctl32_ctl09

{

                overflow: visible !important;

}

Beide Manipulationen führen zum selben Ergebnis. Wird SSRS in SQL Server Version 2008R2 verwendet lautet die ID des Div-Elements ctl31_ctl10. Reporte vom Report Manager in Browsern richtig anzeigen