2012-01-13 47 views
4

我在使用報表查看器加載RDL文件的Visual Studio 2010(C#)中有一個奇怪的問題。WebForm.ReportViewer無限循環問題

我用下面的代碼加載RDL:

 //get the data set and then 
     //. 
     //. 
     //pass the report to the viewer    
     using (FileStream stream = new FileStream(_AccessReportDocument.FileName, FileMode.Open)) 
     { 
      this.AccessReportViewer.LocalReport.LoadReportDefinition(stream); 
     } 
     this.AccessReportViewer.LocalReport.Refresh(); 

的問題是,一旦上面這段代碼到達最後一行時,代碼會跳轉到該頁面的卸載方法,然後回到這一點。 AccessReportViewer.LocalReport.Refresh();即無限循環。有誰之前經歷過這個嗎?我已經讀過,與2010年的報告查看器有問題,但主要與設置參數,我還沒有試圖做...

調試顯示所有數據集等被檢索罰款 - 所以這是不是問題。

回答

13

如果您在設置數據源時未檢查回發,則可能會出現VS2010。這是因爲對報表查看器異步加載數據所做的更改。在這裏充分的解釋:

Reports Never Stop Loading With VS 2010

+0

行,所以我讀的文章和管理,通過增加一個檢查來解決這個問題,看看(的IsPostBack!)。如果!IsPostBack == true,那麼我獲取數據並將其綁定到報告。這是有效的,但我不知道爲什麼它會導致報告無限加載。 – user559142 2012-01-16 10:10:34

+1

這是因爲如果您沒有檢查回傳並在頁面加載時設置數據源,那麼因爲報告查看器控件本身會生成異步回發來呈現它自己,然後這會導致你的頁面加載並重新設置數據源,重置報告查看器,因此它都會重新開始。 – 2012-01-16 11:04:05