我正在使用MSSQL 2005 Reporting Services,在这种情况下,我需要使用ReportViewer控件在ASP.NET页面上显示一些报告(我想这是唯一的方法,对吧?)。
问题是我无法使属性SizeToReportContent
起作用。显示报告时,我得到一个垂直滚动条,因为报告太大。它看起来像一个iframe窗口。
在谷歌搜索它似乎是一个错误。可以通过将AsyncRendering
设置为false
来修复,但我不希望这样。我需要另一种解决方案。
我想知道在加载报告后是否可以使用JavaScript在报表元素上设置高度?
或者你知道另一个解决方案吗?这真令人讨厌。
提前致谢。
答案 0 :(得分:4)
您可以使用javascript设置高度并保持Async = true。我现在在2008版本上使用它。这是我使用的代码:
<script language="JavaScript" type="text/JavaScript">
function doResize() {
var viewer = document.getElementById("<%=ReportViewer1.ClientID %>");
var htmlheight = document.documentElement.clientHeight;
viewer.style.height = (htmlheight - 150) + "px";
}
window.onresize=function resize()
{
doResize();
}
</script>
<rsweb:ReportViewer ID="ReportViewer1" BackColor="#f2f2f2"
InternalBorderStyle="Solid" InternalBorderColor="Gray" ProcessingMode="Remote"
AsyncRendering="true" Width="100%" runat="server"
meta:resourcekey="ReportViewer1Resource1">
<ServerReport />
</rsweb:ReportViewer>
<script language="JavaScript" type="text/JavaScript">
doResize();
</script>
然而,这不适用于VS2010 ReportViewer。我正试图找到解决方案。
答案 1 :(得分:1)
我无法完全回想起要走哪条路 - 但您需要将ReportViewer从Asynch更改为Synch渲染。我大约3年前处理过这个问题,认为这就是我们所做的。
答案 2 :(得分:1)
今天与2010年报告查看器陷入同样的问题。这看起来效果很好......
<style type="text/css">
.fixScrollBarBug div div
{
overflow: visible;
}
.fixScrollBarBug div div div
{
overflow: hidden;
}
</style>
<rsweb:reportviewer ID="reportMonthlyReport" runat="server" ProcessingMode="Remote"
CssClass="fixScrollBarBug" AsyncRendering="false" SizeToReportContent="true"/>
答案 3 :(得分:0)
这可以通过与Visual Studio 2010 beta 2捆绑在一起的ReportViewer解决:
也就是说,我尝试更换新版本,并遇到了大量新的,令人兴奋的,不同的跨浏览器问题。它可能适用于您尝试做的事情。