ReportViewer控件(v10)和高度

时间:2012-06-01 17:19:53

标签: asp.net ssrs-2008 reportviewer reportingservices-2005

我们曾经有过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,但我不确定我可以,因为看起来高度问题仍然存在。   任何建议都非常感谢

1 个答案:

答案 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);
    }
}