0

以前は 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/ハックをすべて取り除きたいのですが、高さの問題がまだ残っているように見えるので、できるかどうかわかりません。

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 に答える