2011-06-15 29 views
4
加載數據源

我已經在ASP.NET中創建了一個包含簡單RDLC報表的項目,當我在設計時使用SqlDataSource綁定報表的DataSource時,一切正常。但是,如果我刪除綁定並嘗試從代碼中設置DataSource,那麼報告似乎永不停止加載。ReportViewer 2010不從代碼

我以前在WinForms應用程序上使用過這個工具,並且沒有任何問題,但這是我第一次嘗試在ASP.NET中完成,沒有運氣。

下面是我用於在Page_Load事件中設置DataSource的代碼。正如我所說的使用SqlDataSource的工作,如果它在.aspx頁面綁定。

ReportViewer1.Reset() 
ReportViewer1.ProcessingMode = ProcessingMode.Local 
ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc") 
ReportViewer1.LocalReport.DataSources.Clear() 
ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", SqlDataSource1)) 
ReportViewer1.LocalReport.Refresh() 

即使我直接在ReportViewer控件設置報告和印章的代碼下降到只有...

ReportViewer1.LocalReport.DataSources.Clear() 
ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", SqlDataSource1)) 
ReportViewer1.LocalReport.Refresh() 

...它仍然不相同。

此外,在Visual Studio中同時加載報告時,你可以看到正在不斷產生了巨大的腳本塊的數量(列表框中不斷增加):

Visual Studio

雖然這是在去加載微調只是半途而廢,重新開始並重復。該頁面不會重新加載。

有什麼想法?

回答

7

好的,像往常一樣發佈問題後不久,您會找到解決方案。

解決方法是確保DataSource的設置僅在頁面不是回發時執行。 SO簡而言之將代碼塊包裝在:

If Not Page.IsPostBack Then 

    <set datasource here> 

End If 

我想這是因爲reportviewer的AJAX性質?如果任何人可以闡明爲什麼會出現這種情況,我很樂意聽到它。

+4

右鍵 - 觸發更新的頁面加載事件中的任何內容都會再次通過加載發回給您,並導致無限循環。更多信息在這裏:http://blogs.msdn.com/b/brianhartman/archive/2010/03/21/reports-never-stop-loading-with-vs-2010.aspx – Ennael 2011-06-16 20:40:24

+2

@Ennael - 謝謝你。一個很好的鏈接來解釋這個問題。 – 2011-06-17 07:49:10

+0

哇,謝謝,幫了很多!也作解釋。 – Ghlouw 2012-03-29 13:07:40