2013-11-20 42 views

回答

1

似乎無法添加評論Sam的答案,所以我會後另一:

的ReportViewerControl ReportServerURL性能比一個很大的不同格式化一般URL以訪問報告。您可以使用sam提供的邏輯將瀏覽器控件導航到該URL,該URL也將在您的Web應用程序中呈現報告。如果你想要嘗試的話,那是另一回事。

作爲一個說明,有各種各樣的原因,你可以選擇一個webbrowser控件與reportviewer控件。 reportviewer控件在代碼隱藏中管理起來要容易得多,但在長時間刷新報表時存在內存問題(通過谷歌關於內存泄漏的大量信息)。這是我改爲使用web瀏覽器和手動格式化的URL來傳遞參數的場景。

+0

你會建議什麼?通過報告查看器或Web瀏覽器? – Valley

+1

我發現使用reportviewer控件最簡單,然後在代碼後面設置所有內容。請參閱http://technet.microsoft.com/en-us/library/aa337091.aspx – ThoughtIKnewSSRS

+0

使用web瀏覽器,您會發現設置URL路徑更繁瑣。 – ThoughtIKnewSSRS

2

您無法通過URL傳遞參數,因爲控件期待的是到實際報表服務器的URL,僅此而已。

示例: serverReport.ReportServerUrl = new Uri(「http://ABCS.com/reportserver」); serverReport.ReportPath =「/ AdventureWorks Sample Reports/My Report」;

雖然通過使用ReportViewer.ServerReport.SetParameters()函數,但您可以在代碼中傳遞這些參數。下面是我用於此目的的代碼片段:

var parametersCollection = new List<ReportParameter>(); 
//add generic parameters that every report needs 
parametersCollection.Add(new ReportParameter("RandomizerString", new Random().Next().ToString(), false)); 
parametersCollection.Add(new ReportParameter("MachineName", Request.UserHostAddress.ToString(), false)); 
ERDashboard.ServerReport.SetParameters(parametersCollection); 
+0

嗨,我想在頁面加載中使用它?我想補充什麼?謝謝。 – Valley

+0

使用Microsoft.Reporting.WebForms;然後是的,你可以使用pageload事件中的代碼。請注意,您必須更改最後一行以反映您自己的ReportViewerControl名稱,而不是上面列出的ERDashboard。 – ThoughtIKnewSSRS

+1

看看這個頁面http://technet.microsoft.com/en-us/library/aa337091.aspx – ThoughtIKnewSSRS