Soluzione definitiva (funziona anche in SSRS 2012!)
Aggiungi lo script seguente al file seguente (sul server 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";
}
}
Nota : come notato azzlak, il nome del div non è sempre ctl31_ctl10
. Per SQL 2012 provare ctl32_ctl09
e per 2008 R2 provare ctl31_ctl09
. Se questa soluzione non funziona, guarda l'HTML dal tuo browser per vedere se lo script ha funzionato correttamente cambiando la overflow:auto
proprietà in overflow:visible
.
Soluzione per il controllo ReportViewer
Inserire nella .aspx
pagina (o in un .css
file collegato , se disponibile) questa linea di stile
#reportViewer_ctl09 {
overflow:visible !important;
}
Motivo
Chrome e Safari rendono il rendering overflow:auto
in modo diverso rispetto a IE.
SSRS HTML è QuirksMode HTML e dipende dai bug di IE 5.5. I browser non IE non hanno la modalità bizzarra di IE e quindi visualizzano correttamente l'HTML
La pagina HTML prodotta dai report SSRS 2008 R2 contiene un div
che ha uno overflow:auto
stile e trasforma il report in un report invisibile.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Posso visualizzare i rapporti su Chrome passando manualmente overflow:auto
a overflow:visible
nella pagina web prodotta utilizzando gli strumenti di sviluppo di Chrome ( F12).
Adoro la soluzione di Tim , è facile e funzionante.
Ma c'è ancora un problema: ogni volta che l'utente modifica i parametri (i miei rapporti usano parametri!) AJAX aggiorna il div, il tag overflow: auto viene riscritto e nessuno script lo cambia.
Questo dettaglio della nota tecnica spiega qual è il problema:
Ciò accade perché in una pagina costruita con pannelli AJAX, solo i pannelli AJAX cambiano il loro stato, senza aggiornare l'intera pagina. Di conseguenza, gli OnLoad
eventi che hai applicato al <body>
tag vengono attivati solo una volta: la prima volta che la tua pagina viene caricata. Dopodiché, la modifica di uno qualsiasi dei pannelli AJAX non attiverà più questi eventi.
L'utente einarq ha suggerito questa soluzione :
Un'altra opzione è rinominare la funzione in pageLoad. Eventuali funzioni con questo nome verranno chiamate automaticamente da asp.net ajax se presente nella pagina, anche dopo ogni aggiornamento parziale. Se lo fai, puoi anche rimuovere l'attributo onload dal tag body
Così ha scritto lo script migliorato mostrato nella soluzione.