0

我们曾经有 SSRS 2005,并且在我们的 asp.net 环境中使用 ReportViewer v9。为了正确实现控件的高度(100%),我经历了一大堆调整大小的 javascript 函数和其他技巧。我的理解是控件的 v9 无法将高度渲染为 100%,因为它使用的是 IFRAME。现在我们升级到 SSRS 2008,我正在实施 ReportViewer v10 控件。不幸的是,即使这个版本不再使用 IFRAME,似乎高度问题仍然存在。有没有人正确实现了宽度=100%、高度=100% 和 AsyncRendering=true 的 asp.net ReportViewer v10 控件?我想摆脱以前版本中所有额外的 javascript/hacks,但我不确定我能不能,因为似乎高度问题仍然存在。

4

1 回答 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 回答