0

次のように基本的な ReportView を設定しました。

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
   <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" ProcessingMode="Remote" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
        <ServerReport ReportPath="/Reports/TestReport" ReportServerUrl="http://test/ReportServer" />
            </rsweb:ReportViewer>

ReportView の高さ/幅を調整するために、次のような簡単なことを行うことができます。

Height = "500px" Width = "300%"

レポート自体のサイズに基づいて ReportViewer のサイズを動的に変更する非常に便利なものも見つけました。

AsyncRendering = "false" SizeToReportContent = "true"

上記を実行すると、ReportViewer がレポート全体に収まる大きさになるため、ReportViewer の厄介なスクロールバーが取り除かれます。高さに関してはこれで問題ありませんが、レポートの幅が常に指定された値にとどまるようにする必要があります (見た目が乱雑にならないようにするため)。

これは可能ですか?たとえば、幅を 900px に設定してから、SizeToReportContent または同等のものを使用して、設定した 900px の幅に影響を与えることなく、ReportViewer の高さがレポート自体のサイズに自動的に調整されるようにすることはできますか。

助けてくれてありがとう!

4

1 に答える 1

1

これを行うには 2 つの方法があります 。Pag​​eLoad で C# を使用する方法です

   private void Page_Load(object sender, System.EventArgs e)
   {
      // Set Report's Current Page & Width.
      ReportViewer.CurrentPage = Report.CurrentPage;
      ReportViewer.Width = new Unit(Report.Width);
      // Where Report.Width is the format "12in"
      // I think it accepts pixels as well. I'm not positive though.
   }

Javascript 経由

function AdjustWidths() {
    // This grabs the first div containing "1_" since the ReportViewer Div is "1_" + ReportViewerName.
    // ReportViewerName being the Identifier in the C# PageLoad. (In the example above: "ReportViewer").
    var ReportViewerID = $($("div[id*=1_]")[0]).attr("id"); 
    // Sets the width equal to the inner "_fixedTable" which is the contents.
    $("#" + ReportViewerID).css("width", $("#" + ReportViewerID + "_fixedTable").css("width"));
}

javascript メソッドは完全な証明ではありません (ただし、これまでのところ問題は発生していません)。これは、ビューアのサイズをページ全体に調整するために作成した JQuery スクリプトにすぎません。そのため、必要に応じて幅を調整します。これはあなたが望むものを手に入れることはできませんが、いくつかの小さな変更を加えれば、そこにたどり着くことができます.

これがお役に立てば幸いです。

于 2013-10-02T03:31:11.283 に答える