Solution ultime (fonctionne également dans SSRS 2012!)
Ajoutez le script suivant au fichier suivant (sur le serveur 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";
}
}
Remarque : comme azzlak l'a noté, le nom du div n'est pas toujours ctl31_ctl10
. Pour SQL 2012 essayez ctl32_ctl09
et pour 2008 R2 essayez ctl31_ctl09
. Si cette solution ne fonctionne pas, regardez le code HTML de votre navigateur pour voir si le script a correctement fonctionné en changeant la overflow:auto
propriété en overflow:visible
.
Solution pour le contrôle ReportViewer
Insérez dans la .aspx
page (ou dans un .css
fichier lié , si disponible) cette ligne de style
#reportViewer_ctl09 {
overflow:visible !important;
}
Raison
Chrome et Safari sont rendus overflow:auto
de manière différente par rapport à IE.
Le HTML SSRS est du HTML QuirksMode et dépend des bogues d'IE 5.5. Les navigateurs non-IE n'ont pas le mode quirksmode IE et donc rendent le HTML correctement
La page HTML produite par les rapports SSRS 2008 R2 contient un div
qui a du overflow:auto
style et transforme le rapport en un rapport invisible.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Je peux voir les rapports sur Chrome en passant manuellement overflow:auto
à overflow:visible
dans la page Web produite à l'aide des outils de développement de Chrome ( F12).
J'adore la solution de Tim , c'est facile et efficace.
Mais il y a toujours un problème: à chaque fois que l'utilisateur change les paramètres (mes rapports utilisent des paramètres!) AJAX actualise le div, le débordement: auto tag est réécrit, et aucun script ne le change.
Ce détail technique explique quel est le problème:
Cela se produit car dans une page construite avec des panneaux AJAX, seuls les panneaux AJAX changent d'état, sans actualiser toute la page. Par conséquent, les OnLoad
événements que vous avez appliqués sur la <body>
balise ne sont déclenchés qu'une seule fois: lors du premier chargement de votre page. Après cela, la modification de l'un des panneaux AJAX ne déclenchera plus ces événements.
L'utilisateur einarq a suggéré cette solution :
Une autre option consiste à renommer votre fonction en pageLoad. Toute fonction portant ce nom sera appelée automatiquement par asp.net ajax si elle existe sur la page, également après chaque mise à jour partielle. Si vous faites cela, vous pouvez également supprimer l'attribut onload de la balise body
Ainsi a écrit le script amélioré qui est montré dans la solution.