我们曾经有过SSRS 2005,并且在我们的asp.net环境中使用了ReportViewer v9。为了正确实现控件的高度(100%),我经历了一大堆调整javascript函数和其他hacks。我的理解是,由于它正在使用的IFRAME,控件的v9无法将高度渲染为100%。 现在我们升级到SSRS 2008,我正在实施ReportViewer v10控件。不幸的是,即使这个版本不再使用IFRAME,似乎高度问题仍然存在。 有没有人正确实现了宽度= 100%,高度= 100%和AsyncRendering = true的asp.net ReportViewer v10控件?我想摆脱以前版本的所有额外的javascript / hacks,但我不确定我可以,因为看起来高度问题仍然存在。 任何建议都非常感谢
答案 0 :(得分: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);
}
}