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
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
Hinweis : Wie Azzlak bemerkte, ist der Name des Div nicht immer ctl31_ctl10
. Für SQL 2012 versuchen ctl32_ctl09
und für 2008 R2 versuchen ctl31_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 die overflow:auto
Eigenschaft in ändern overflow: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) ein
#reportViewer_ctl09 {
overflow:visible !important;
}
Grund
Chrome und Safari rendern overflow:auto
in Bezug auf den IE unterschiedlich.
SSRS-HTML ist QuirksMode-HTML und hängt von IE 5.5-Fehlern ab. Nicht-IE-Browser haben nicht den IE-Quirksmode und rendern daher den HTML-Code korrekt
Die HTML - Seite von SSRS 2008 R2 erstellten Berichten enthält eine , div
die hat overflow:auto
Stil, und es stellt sich Bericht in einen unsichtbaren Bericht.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Ich kann Berichte in Chrome anzeigen, indem ich mit den Dev Tools ( ) von Chrome manuell overflow:auto
auf overflow: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:
Dies liegt daran, dass auf einer Seite, die mit AJAX-Bedienfeldern erstellt wurde, nur die AJAX-Bedienfelder ihren Status ändern, ohne die gesamte Seite zu aktualisieren. Folglich werden die OnLoad
Ereignisse , die Sie auf das <body>
Tag angewendet haben, nur einmal ausgelöst: beim ersten Laden Ihrer Seite. Danach löst das Ändern eines der AJAX-Bedienfelder diese Ereignisse nicht mehr aus.
Benutzer einarq schlug diese Lösung vor :
Eine andere Möglichkeit besteht darin, Ihre Funktion in pageLoad umzubenennen. Alle Funktionen mit diesem Namen werden von asp.net ajax automatisch aufgerufen, wenn sie auf der Seite vorhanden sind, auch nach jeder teilweisen Aktualisierung. In diesem Fall können Sie auch das Onload-Attribut aus dem Body-Tag entfernen
Also schrieb das verbesserte Skript, das in der Lösung gezeigt wird.