Kurz und knapp möchte ich hier auf ein beliebtes Problem eingehen – das Öffnen eines Reporting Services Report Links in einem neuen Fenster, wenn dieser in ein IFrame eingebunden ist.

Folgendes Szenario: Ein Report 1 hat in einer TextBox einen Link zu einem Report 2. Der Link soll sich in einem neuen Fenster öffnen. Soweit, so klassisch.

Nun ist allerdings der Report 1 in einem IFrame eingebunden. Damit funktioniert der übliche Weg zum Öffnen des Report Links in einem neuen Fenster nicht.

Eine Google Suche zu diesem Problem bringt viele Tipps, es mit JavaScript zu versuchen. Nach dem Schema:

=”javascript:void(window.open(‘” & Globals!ReportServerUrl & “?/SomeFolder/SomeReport&ParamName=” & Parameters!ParamName.Value’,’_blank’))”

Leider funktioniert das – auch wenn immer wieder behauptet – eben nicht, wenn der SSRS Report in ein IFrame eingebettet ist.

Auch beliebt ist der Tipp, den Link im Report mit HTML-Tags zu verpacken. Das funktioniert dann so, dass die Textbox überredet wird, HTML Tags zu interpretieren (TextBox –> Place holder Properties –> HTML-Interpret HTML tags as styles) und der TextBox als Ausdruck folgendes mitgegeben wird:

=”<a href=””javascript:void(window.open(‘http://www.google.com/’))””>_blank</a>”

Eine schöne Anleitung, funktioniert aber bei in IFrames eingebetteten SSRS Reports leider ebenfalls nicht.

Auf den MSDN Seiten suche ich nach den Stichworten “URL Access” und gelange auf die Seite “Verwenden des URL-Zugriffs in einer Webanwendung”:  http://msdn.microsoft.com/de-de/library/ms153563.aspx

Der Hinweis auf “LinkTarget” stimmt optimistisch. Also schnell den Link in der TextBox in Report 1 erweitert um “&rc:LinkTarget=_blank”, ausprobiert und – funktioniert auch nicht.

Leider lässt die Hilfestellung der MSDN-Seiten an dieser Stelle zu wüschen übrig. Der entscheidende Hinweis zum Einbau fehlt. Was war falsch? Der URL-Zusatz muss nicht in die TextBox im Report 1 zum Aufruf des Report 2, sondern in den Link zum Report 1 im iFrame:

<iframe src=”http://<reportserver>/ReportServer?%2fSomeFolder%2fReport+1&rs:Command=Render&rc:LinkTarget=_blank” width=”90%” height=”400″ name=”My iFrame”> <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen</p> </iframe>

Damit wird dem Report 1 gesagt, dass alle Links im Report 1 in einem neuen Fenster geöffnet werden sollen. Funktioniert wunderbar!