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 周围的任何讨厌的滚动条,因为它会变得足够大以容纳整个报告。就高度而言,这很好,但是我需要报告的宽度始终保持在指定值(以使事情看起来不那么混乱)。

这可能吗?例如,我能否以某种方式将 Width 设置为 900px,然后使用 SizeToReportContent 或等效项,以便 ReportViewer 的高度自动调整为报表本身的大小,而不会影响我设置的 900px 宽度。

谢谢你的帮助!

4

1 回答 1

1

有两种方法可以做到这一点, 通过 PageLoad 上的 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 回答