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.

 

 

 

 

 

 

 

 

 

 

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. 

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 FilesMicrosoft SQL ServerMSRS11.MSSQLSERVERReporting ServicesReportManagerjs) 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 FilesMicrosoft SQL ServerMSRS11.MSSQLSERVERReporting ServicesReportManagerStyles 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.