2009-09-04 151 views
4

我正在使用MSSQL 2005 Reporting Services,在這種情況下,我需要使用ReportViewer控件在ASP.NET頁面上顯示一些報告(我想這是唯一的方法,對不對?)。ReportViewer高度問題。隱藏滾動條

問題是我無法獲得屬性SizeToReportContent的工作。當顯示報告時,我得到一個垂直滾動條,因爲報告太大。它看起來像一個iframe窗口。 在谷歌上搜索它似乎是一個錯誤。它可以通過設置AsyncRenderingfalse來解決,但我不想那麼做。我需要另一種解決方案

我想知道是否可以在報表加載後使用JavaScript設置報表元素的高度?

或者您是否知道另一種解決方案?這真的很煩人。

在此先感謝。

+0

我想知道這些問題是否已在VS2010 Beta 1的ReportViewer中發佈,並且如果我可以在ASP.NET 3.5(VS2008)中使用它? – 2009-09-05 08:24:11

回答

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

您是否碰巧找到VS2010 ReportViewer的解決方案? – Kyle 2012-08-01 13:48:06

1

我不能完全記得要走哪條路 - 但是您需要將ReportViewer從Asynch更改爲Synch渲染。我在3年前處理過這個問題,並認爲這就是我們所做的。

+0

但我真的想避免這種情況。 – 2009-09-05 07:56:21

+0

麻煩的是,報告呈現時,它不知道它會有多大。在渲染完成之前,它不知道這一點。但是,自從我上次必須解決這個問題以來,可能會出現一個java解決方案。 – StrateSQL 2009-09-05 20:01:21

+0

謝謝,這對我有用。 像湯米說的那樣 - 這並不理想,但如果你不知道報告有多大,那麼你可以做的很少。另一個選擇是通過使用Javascript獲取客戶端的瀏覽器窗口高度來動態設置查看器高度。 – 2010-02-02 20:51:50

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"/> 
<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"/>