Sunday, June 15, 2014

Microsoft Reporting Services (SSRS)-Berichte in Chrome rendern

Bei einem meiner SSRS-Seminare wollten wir unseren erstellten Bericht auch in Chrome anzeigen.
Das klappt leider bei Default nicht, da an dem zur Anzeige benötigten DIV-Element "overflow: auto" von Microsoft vergeben wurde,
was aber leider dazu führt, dass Chrome das DIV hided (im Gegensatz zum IE).

Ihr könnt das relativ leicht selbst nachvollziehen. Ladet einen eurer SSRS-Berichte und sucht im Browser (im erzeugten Source) nach dem DIV.

Verwendet dazu entweder

  • ‘ctl31_ctl09’
  • ‘ctl31_ctl10’
  • ‘ctl32_ctl09’

Je nach SSRS-Version und Service Pack, die Ihr verwendet ist der (volle) Name unterschiedlich.

Bei mir sieht das bei einer erfolgreichen Suche dann so aus (achtet darauf, dass Ihr das DIV-Element sucht):
image

Wenn Ihr im Chrome Debugger den Wert für overflow:auto auf overflow:visible stellt, dann wäre der Bericht sichtbar:

image

Also bringen wir das dem SSRS-Server einfach bei. Zum Glück gibt es eine JavaScript-Datei, die wir anpassen können, diese findet ihr hier:

"c:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js"

Möglicherweise heißt bei euch das Verzeichnis nicht MSRS11.MSSQLSERVER, dann habt Ihr eine anderen Version installiert, bzw. einen anderen Namen für die Instanz vergeben.

In dieser Datei fügt nun folgendes Script am Ende ein (dazu benötigt Ihr Administratorrenrechte), sicherheitshalber habe ich gleich alle mir bekannten Namen eingetragen:

function pageLoad() {   
    var element1 = document.getElementById("ctl31_ctl09"); if (element1) { element1.style.overflow = "visible"; }
    var element2 = document.getElementById("ctl31_ctl10"); if (element2) { element2.style.overflow = "visible"; }
    var element3 = document.getElementById("ctl32_ctl09"); if (element3) { element3.style.overflow = "visible"; }
};

Aktualisiert euren Bericht und Ihr müsstet nun euren Bericht auch in Chrome bewundern können….

Happy Report Building!

CSharpCodeFormatter