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