Ultimative Lösung (funktioniert auch in SSRS 2012!)
Fügen Sie das folgende Skript an " C: \ Programme \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js " (auf dem SSRS-Server) an:
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
Eigentlich weiß ich nicht, ob der Name des Div immer lautet ctl31_ctl10
: in meinem Fall ist es (stattdessen über SQL Server 2012 Azzlak gefunden ctl32_ctl09
).
Wenn diese Lösung nicht funktioniert, überprüfen Sie den HTML-Code Ihres Browsers, um festzustellen, ob das Skript ordnungsgemäß funktioniert hat. Ändern Sie die Eigenschaft overflow: auto in overflow: visible .
Lösung für die ReportViewer-Steuerung
Fügen Sie diese Stilzeile in die .aspx
Seite ein (oder in eine verknüpfte .css
Datei, falls verfügbar):
#reportViewer_ctl09 {
overflow:visible !important;
}
Grund
Chrome und Safari rendern Überlauf: Auto anders als Internet Explorer.
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 von SSRS 2008 R2-Berichten erstellte HTML-Seite enthält ein div mit Überlauf: auto style und verwandelt den Bericht in einen unsichtbaren Bericht.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
...</div>
Manuelles Ändern (mithilfe des Chrome-Debug-Fensters) Endgültiger HTML- Überlauf: Automatisch im Überlauf: sichtbar Ich kann Berichte in Chrome sehen.
Ich liebe Tims Lösung . Es 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, wird das Tag " Überlauf: Auto" 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 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.
Mr.einarq schlug mir hier die 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 habe ich das verbesserte Skript geschrieben, das in der Lösung gezeigt wird.