Ostateczne rozwiązanie (działa również w SSRS 2012!)
Dołącz następujący skrypt do następującego pliku (na serwerze SSRS)
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";
}
}
Uwaga : jak zauważył Azzlak, nazwa div nie zawsze ctl31_ctl10
. W przypadku SQL 2012 wypróbuj, ctl32_ctl09
aw przypadku 2008 R2 wypróbuj ctl31_ctl09
. Jeśli to rozwiązanie nie działa, spójrz na kod HTML w przeglądarce, aby sprawdzić, czy skrypt działał poprawnie, zmieniając overflow:auto
właściwość na overflow:visible
.
Rozwiązanie dla kontroli ReportViewer
Wstaw na .aspx
stronę (lub do połączonego .css
pliku, jeśli jest dostępny) tę linię stylu
#reportViewer_ctl09 {
overflow:visible !important;
}
Powód
Chrome i Safari renderują się overflow:auto
inaczej niż IE.
HTML SSRS to QuirksMode HTML i zależy od błędów IE 5.5. Przeglądarki inne niż IE nie mają trybu dziwnego IE i dlatego poprawnie renderują kod HTML
Strona HTML generowana przez raporty SSRS 2008 R2 zawiera, div
który ma overflow:auto
styl i zamienia raport w niewidoczny raport.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Widzę raporty dotyczące Chrome ręcznie zmienić overflow:auto
się overflow:visible
w wytworzonym za pomocą strony internetowej Chrome Dev Tools ( F12).
Uwielbiam rozwiązanie Tima , jest łatwe i działa.
Ale nadal jest problem: za każdym razem, gdy użytkownik zmienia parametry (moje raporty używają parametrów!) AJAX odświeża div, przepełnienie: auto tag jest przepisywane i żaden skrypt go nie zmienia.
Ten szczegół techniczny wyjaśnia, na czym polega problem:
Dzieje się tak, ponieważ na stronie zbudowanej przy użyciu paneli AJAX tylko panele AJAX zmieniają swój stan, bez odświeżania całej strony. W rezultacie OnLoad
zdarzenia zastosowane w <body>
tagu są uruchamiane tylko raz: przy pierwszym wczytaniu strony. Potem zmiana któregokolwiek z paneli AJAX nie będzie już powodować tych zdarzeń.
Użytkownik einarq zasugerował takie rozwiązanie :
Inną opcją jest zmiana nazwy funkcji na pageLoad. Wszelkie funkcje o tej nazwie będą wywoływane automatycznie przez plik asp.net ajax, jeśli istnieje na stronie, również po każdej częściowej aktualizacji. Jeśli to zrobisz, możesz również usunąć atrybut onload z tagu body
Tak napisał ulepszony skrypt, który jest pokazany w rozwiązaniu.