以前は SSRS 2005 を使用しており、asp.net 環境で ReportViewer v9 を使用していました。コントロールの高さを正しく (100%) 実装するために、JavaScript 関数のサイズ変更やその他のハックをたくさん試しました。私の理解では、コントロールの v9 は、使用していた IFRAME のために、高さを 100% としてレンダリングできませんでした。現在、SSRS 2008 にアップグレードし、ReportViewer v10 コントロールを実装しています。残念ながら、このバージョンは IFRAME を使用しなくなりましたが、高さの問題はまだ残っているようです。width=100%、height=100%、AsyncRendering=true で asp.net ReportViewer v10 コントロールを正しく実装した人はいますか? 以前のバージョンの余分な JavaScript/ハックをすべて取り除きたいのですが、高さの問題がまだ残っているように見えるので、できるかどうかわかりません。
質問する
1443 次
1 に答える
0
更新として、はい、ReportViewer バージョン 10 には、ページに他のコントロールがある場合、高さがすべて台無しになるという問題がまだあります。他の誰かがこの問題を抱えている場合に備えて、コントロールの高さを機能させ、正しくサイズ変更するためのスクリプトを次に示します。rv1 はレポート ビューアー コントロールで、fl はレポート パラメーター用のカスタム パラメーター パネルです。
Sys.Application.add_load(function() { $find('rv1').add_propertyChanged(viewerPropertyChanged); });
$(window).resize(resize);
function viewerPropertyChanged(sender, e) {
if (e.get_propertyName() === 'isLoading') {
var viewer = $find('rv1');
if (!viewer.get_isLoading())
resizeWithOffset();
}
}
function resizeWithOffset() {
resize(11);
}
function resize(offset) {
if (typeof (offset) == 'object' || offset == 'undefined')
offset = 0;
// only apply if filter parameter panel is present
var parameterHeight = $('#fl').height();
if (parameterHeight != null) {
// get height of the report viewer toolbar
var toolbarHeight = $('#rv1_fixedTable > tbody > tr:nth-child(4)').height();
// get height of the padding between actual report content and toolbar
var paddingHeight = $('#rv1_fixedTable').height() - ($('#rv1_fixedTable > tbody > tr:nth-child(5) > td:nth-child(3)').height() + toolbarHeight);
// set new height.
var newHeight = ($(window).height() - (parameterHeight + toolbarHeight + 11)) + offset;
$('#rv1_fixedTable > tbody > tr:nth-child(5) > td:nth-child(3)').height(newHeight);
$('#rv1_fixedTable > tbody > tr:nth-child(5) > td:nth-child(3) > div').height(newHeight);
}
}
于 2012-06-11T20:24:46.807 に答える