Ostateczne rozwiązanie (działa również w SSRS 2012!)
Dołącz następujący skrypt do „ C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js ” (na serwerze SSRS):
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
Właściwie nie wiem, czy nazwa div jest zawsze ctl31_ctl10
: w moim przypadku tak jest (zamiast tego znaleziono azzlak w SQL Server 2012 ctl32_ctl09
).
Jeśli to rozwiązanie nie działa, spójrz na kod HTML z przeglądarki, aby sprawdzić, czy skrypt zadziałał poprawnie, zmieniając właściwość overflow: auto na overflow: visible .
Rozwiązanie dla kontroli ReportViewer
Wstaw tę linię stylu na .aspx
stronę (lub do połączonego .css
pliku, jeśli jest dostępny):
#reportViewer_ctl09 {
overflow:visible !important;
}
Powód
Przepełnienie renderowania w Chrome i Safari : automatycznie w inny sposób niż w Internet Explorerze.
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 prawidłowo renderują kod HTML
Strona HTML utworzona przez raporty SSRS 2008 R2 zawiera element div, który ma przepełnienie: styl automatyczny i zamienia raport w niewidoczny raport.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
...</div>
Ręczna zmiana (za pomocą okna debugowania Chrome) ostateczny przepełnienie HTML : auto w przepełnieniu: widoczne widzę raporty w Chrome.
Uwielbiam rozwiązanie Tima ; to jest łatwe i działa.
Ale wciąż 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 zdarzenia OnLoad zastosowane do tagu są uruchamiane tylko raz: przy pierwszym wczytaniu strony. Potem zmiana któregokolwiek z paneli AJAX nie będzie już powodować tych zdarzeń.
Pan einarq zasugerował mi tutaj rozwiązanie .
Inną opcją jest zmiana nazwy funkcji na pageLoad.
Wszelkie funkcje o tej nazwie będą wywoływane automatycznie przez ASP.NET Ajax, jeśli istnieją na stronie, również po każdej częściowej aktualizacji. Jeśli to zrobisz, możesz również usunąć atrybut onload z tagu body
Napisałem więc ulepszony skrypt, który jest pokazany w rozwiązaniu.