究極のソリューション(SSRS 2012でも機能します!)
次のスクリプトを「C:\ ProgramFiles \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js」(SSRSサーバー上)に追加します。
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
実際、divの名前が常にであるかどうかはわかりませんctl31_ctl10
:私の場合はそうです(代わりにSQL Server 2012 azzlakが見つかりましたctl32_ctl09
)。
このソリューションが機能しない場合は、ブラウザからHTMLを調べて、スクリプトが正しく機能しているかどうかを確認し、overflow:autoプロパティをoverflow:visibleに変更します。
ReportViewerコントロールのソリューション
このスタイルラインを.aspx
ページ(または.css
、可能な場合はリンクされたファイル)に挿入します。
#reportViewer_ctl09 {
overflow:visible !important;
}
理由
ChromeとSafariは、Internet Explorerとは異なる方法でoverflow:autoをレンダリングします。
SSRSHTMLはQuirksModeHTMLであり、IE5.5のバグに依存しています。非IEブラウザにはIEquirksmodeがないため、HTMLを正しくレンダリングします
SSRS 2008 R2レポートによって生成されたHTMLページには、overflow:autoスタイルのdivが含まれており、レポートが非表示のレポートに変わります。
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
...</div>
最終的なHTML(Chromeのデバッグウィンドウを使用して)手動で変更オーバーフロー:自動でオーバーフロー:目に見えます私はクロームに関するレポートを見ることができます。
ティムのソリューションが大好きですです; それは簡単で機能します。
しかし、まだ問題があります。ユーザーがパラメーターを変更するたびに(私のレポートではパラメーターを使用します!)、AJAXがdivを更新すると、overflow:autoタグが書き換えられ、スクリプトによって変更されることはありません。
この技術ノートの詳細は、何が問題なのかを説明しています。
これは、AJAXパネルで構築されたページでは、ページ全体を更新せずに、AJAXパネルのみが状態を変更するために発生します。したがって、タグに適用したOnLoadイベントは、ページが最初に読み込まれたときに1回だけ発生します。その後、AJAXパネルを変更しても、これらのイベントはトリガーされなくなります。
einarq氏は私にここで解決策を提案しました。
もう1つのオプションは、関数の名前をpageLoadに変更することです。
この名前の関数は、部分的に更新されるたびに、ページに存在する場合はASP.NETAjaxによって自動的に呼び出されます。これを行うと、bodyタグからonload属性を削除することもできます
そこで、ソリューションに示されている改善されたスクリプトを作成しました。