Ich habe unsere Berichtsdienste von Version 2008 auf eine andere Serverversion 2008 R2 migriert. In Version 2008 funktionieren die Berichte in Safari einwandfrei. In der neuen Version 2008 R2 werden die Berichte überhaupt nicht angezeigt. Ich sehe nur den Parameterabschnitt und dann ist der Bericht leer. Gleiches gilt für Chrome. Laut Microsoft wird Safari nur eingeschränkt unterstützt. Die Berichte sind nicht komplex. Tatsächlich habe ich einen Bericht erstellt, der nur eine Zeile enthält, um zu sehen, ob er in Safari angezeigt wird, aber nein, dieser Bericht ist ebenfalls vollständig leer. Hat jemand SSRS-Berichte auf Safari sichtbar gemacht? Muss ich mich mit einer Art Konfigurationseinstellung herumschlagen?
84
Antworten:
Ultimative Lösung (funktioniert auch in SSRS 2012!)
Hängen Sie das folgende Skript an die folgende Datei an (auf dem SSRS-Server).
C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js
Hinweis : Wie Azzlak bemerkte, ist der Name des Div nicht immer
ctl31_ctl10
. Für SQL 2012 versuchenctl32_ctl09
und für 2008 R2 versuchenctl31_ctl09
. Wenn diese Lösung nicht funktioniert, überprüfen Sie den HTML-Code Ihres Browsers, um festzustellen, ob das Skript ordnungsgemäß funktioniert hat, indem Sie dieoverflow:auto
Eigenschaft in ändernoverflow:visible
.Lösung für die ReportViewer-Steuerung
Fügen Sie diese Stilzeile in eine
.aspx
Seite (oder in eine verknüpfte.css
Datei, falls verfügbar) einGrund
Chrome und Safari rendern
overflow:auto
in Bezug auf den IE unterschiedlich.Die HTML - Seite von SSRS 2008 R2 erstellten Berichten enthält eine ,
div
die hatoverflow:auto
Stil, und es stellt sich Bericht in einen unsichtbaren Bericht.Ich kann Berichte in Chrome anzeigen, indem ich mit den Dev Tools ( ) von Chrome manuell
overflow:auto
aufoverflow:visible
die erstellte Webseite wechsle F12.Ich liebe Tims Lösung , sie ist einfach und funktioniert.
Es gibt jedoch immer noch ein Problem: Jedes Mal, wenn der Benutzer Parameter ändert (meine Berichte verwenden Parameter!), Aktualisiert AJAX das div, das Tag " Überlauf: Auto" wird neu geschrieben und kein Skript ändert es.
Dieses Technote-Detail erklärt, wo das Problem liegt:
Benutzer einarq schlug diese Lösung vor :
Also schrieb das verbesserte Skript, das in der Lösung gezeigt wird.
quelle
ctl32_ctl09
.Fügen Sie einfach
SizeToReportContent="true"
wie unten gezeigt hinzuquelle
Ich verwende Chrome Version 21 mit SQL 2008 R2 SP1 und keine der oben genannten Korrekturen hat bei mir funktioniert. Unten ist der Code , die Arbeit getan hat, wie bei den anderen Antworten , die ich dieses Stück Code anhängen hinzugefügt „C: \ Programme \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ Reportmanager \ js \ ReportingServices.js“ (auf der SSRS-Server):
quelle
Dies ist ein bekanntes Problem . Das Problem ist, dass ein div-Tag den Stil "overflow: auto" hat, der mit WebKit, das von Safari und Chrome verwendet wird, anscheinend nicht gut implementiert ist (siehe die Antwort von Emanuele Greco). Ich wusste nicht, wie ich Emanueles Vorschlag nutzen sollte, das RS: ReportViewerHost-Element zu verwenden, aber ich löste es mit JavaScript.
Problem
Lösung
Da "overflow: auto" im style-Attribut des div-Elements mit der ID "ctl31_ctl10" angegeben ist, können wir es in einer Stylesheet-Datei nicht überschreiben, sodass ich auf JavaScript zurückgegriffen habe. Ich habe den folgenden Code an "C: \ Programme \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js" angehängt.
Hinweis
Es scheint eine Lösung für SSRS 2005 zu geben , die ich nicht ausprobiert habe, aber ich glaube nicht, dass sie auf SSRS 2008 anwendbar ist, da ich die Klasse "DocMapAndReportFrame" nicht finden kann.
quelle
Meine Lösung basiert auf den obigen Ideen.
Es ist nicht auf eine bestimmte ID beschränkt und Sie müssen keine andere Bibliothek wie jQuery einbinden.
quelle
Hier ist die Lösung, die ich für Report Server 2008 R2 verwendet habe
Es sollte unabhängig davon funktionieren, wofür der Berichtsserver in seinem Attribut "id" der Tabelle zur Verwendung ausgegeben wird. Ich glaube nicht, dass Sie immer davon ausgehen können, dass es "ctl31_fixedTable" sein wird.
Ich habe eine Mischung aus dem obigen Vorschlag und einigen Möglichkeiten verwendet, um jquery-Bibliotheken dynamisch in eine Seite aus der hier gefundenen Javascript-Datei zu laden
Wechseln Sie auf dem Server in das Verzeichnis: C: \ Programme \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js
Kopieren Sie die jquery-Bibliothek jquery-1.6.2.min.js in das Verzeichnis
Erstellen Sie eine Sicherungskopie der Datei ReportingServices.js Bearbeiten Sie die Datei. Und fügen Sie dies ganz unten hinzu:
quelle
Sie können dies einfach mit jQuery beheben - und ein wenig hässlichem Hack :-)
Ich habe eine asp.net-Seite mit einem ReportViewer-Benutzersteuerelement.
Im Dokument Ready-Ereignis starte ich dann einen Timer und suche nach dem Element, das den Überlauf-Fix benötigt (wie in den vorherigen Beiträgen):
Besser als anzunehmen, dass es eine bestimmte ID hat. Sie können den Timer nach Belieben einstellen. Ich habe es hier auf 1000 ms eingestellt.
quelle
Zu Ihrer Information: Keine der oben genannten Funktionen hat 2012 in SP1 für mich funktioniert. Eine einfache Lösung bestand darin, Anmeldeinformationen in die gemeinsam genutzte Datenquelle einzubetten und Safari dann anzuweisen, der SSRS-Server-Site zu vertrauen. Dann hat es super geklappt! Es hat Tage gedauert, vermeintliche Lösungen wie oben zu suchen, nur um herauszufinden, dass integrierte Sicherheit in Safari nicht zuverlässig funktioniert - Sie müssen sich mit dem Schlüsselbund auf dem Mac herumschlagen und funktionieren dann immer noch nicht zuverlässig.
quelle
Die von Emanuele bereitgestellte Lösung hat für mich funktioniert. Ich konnte den Bericht sehen, als ich direkt vom Server darauf zugegriffen habe, aber als ich ein ReportViewer-Steuerelement auf meiner Aspx-Seite verwendete, konnte ich den Bericht nicht sehen. Bei der Überprüfung des gerenderten HTML-Codes habe ich ein Div mit der ID "ReportViewerGeneral_ctl09" ( ReportViewerGeneral) gefunden ist die Server-ID des Report Viewer-Steuerelements) gefunden, dessen Überlaufeigenschaft auf "auto" gesetzt war.
Ich habe das von Emanuele erläuterte Verfahren verwendet, um dies wie folgt sichtbar zu machen:
quelle
Ich habe das benutzt. Fügen Sie auf der Seite Report.aspx einen Skriptverweis auf jquery hinzu. Verwenden Sie Folgendes, um JQuery mit den Microsoft-Ereignissen zu verknüpfen. Ich habe ein wenig von Erics Vorschlag zum Einstellen des Überlaufs verwendet.
quelle