Visual Studio Express 2012 - 动态调整报表视图的大小

时间:2013-10-01 12:44:12

标签: visual-studio visual-studio-2012 report reportviewer

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分: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脚本,用于将查看器的大小调整为整页。因此,根据需要调整宽度。这不会得到你想要的东西,但经过一些细微的改动,它会让你到达那里。

希望这有用。