究極のソリューション(SSRS 2012でも機能します!)
次のスクリプトを次のファイル(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";
}
}
注:azzlakが指摘したように、divの名前は必ずしもctl31_ctl10
。ではありません。SQL 2012の場合は試してctl32_ctl09
、2008R2の場合は試してくださいctl31_ctl09
。このソリューションが機能しない場合は、ブラウザからHTMLを調べて、overflow:auto
プロパティをに変更してスクリプトが適切に機能したかどうかを確認してくださいoverflow:visible
。
ReportViewerコントロールのソリューション
このスタイルラインを.aspx
ページ(または.css
可能な場合はリンクされたファイル)に挿入します
#reportViewer_ctl09 {
overflow:visible !important;
}
理由
ChromeとSafariはoverflow:auto
、IEに関して異なる方法でレンダリングします。
SSRSHTMLはQuirksModeHTMLであり、IE5.5のバグに依存しています。非IEブラウザにはIEquirksmodeがないため、HTMLを正しくレンダリングします
SSRS 2008 R2レポートによって生成されたHTMLページには、スタイルのdiv
あるが含まれておりoverflow:auto
、レポートが非表示のレポートに変わります。
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Chromeの開発ツール()を使用して、作成されたWebページで手動でに変更overflow:auto
するoverflow:visible
と、Chromeに関するレポートを表示できますF12。
私はティムのソリューションが大好きです。それは簡単で機能します。
しかし、まだ問題があります。ユーザーがパラメーターを変更するたびに(私のレポートはパラメーターを使用します!)、AJAXはdivを更新し、overflow:autoタグが書き換えられ、スクリプトはそれを変更しません。
この技術ノートの詳細は、問題が何であるかを説明しています。
これは、AJAXパネルで構築されたページでは、ページ全体を更新せずに、AJAXパネルのみが状態を変更するために発生します。したがって、タグにOnLoad
適用したイベントは<body>
、ページが最初に読み込まれたときに1回だけ発生します。その後、AJAXパネルを変更しても、これらのイベントはトリガーされなくなります。
ユーザーeinarqはこの解決策を提案しました:
もう1つのオプションは、関数の名前をpageLoadに変更することです。この名前の関数は、部分的に更新されるたびに、ページに存在する場合はasp.netajaxによって自動的に呼び出されます。これを行うと、bodyタグからonload属性を削除することもできます
そこで、ソリューションに示されている改善されたスクリプトを作成しました。