我已经设置了一个基本的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宽度。
感谢您的帮助!
答案 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脚本,用于将查看器的大小调整为整页。因此,根据需要调整宽度。这不会得到你想要的东西,但经过一些细微的改动,它会让你到达那里。
希望这有用。