像你一樣,我希望能夠在ReportViewer中顯示LocalReport。
這裏我是如何實現這一點:
Param_MyLocalReport是[與.Render]行之有效的LocalReport。 ReportViewer1是,呃,ReportViewer我想顯示我的報告。這個功能是自動的,一個會複製數據源和參數。
//****************************
//assign report Path
reportViewer1.LocalReport.ReportPath = param_MyLocalReport.ReportPath;
//****************************
//****************************
//assign data-sources
foreach (ReportDataSource MyDS in param_MyLocalReport.DataSources)
reportViewer1.LocalReport.DataSources.Add(MyDS);
//****************************
//****************************
//Assign parameters
//get a list of actual parameters in the report, with the actual assigned value
ReportParameterInfoCollection MyOrigParams = param_MyLocalReport.GetParameters(); //I didn't find simpler way to fetch params...
//create a List of parameter [to feed the reportViewer]
List<ReportParameter> MyListOfPArams = new List<ReportParameter>();
//for each params found through GetParameters(), add it to the List<> of params
for (int i = 0; i < MyOrigParams.Count; i++)
MyListOfPArams.Add(new ReportParameter(MyOrigParams[i].Name, MyOrigParams[i].Values[0]));
//final assignation of the parameters
reportViewer1.LocalReport.SetParameters(MyListOfPArams);
//****************************
//show the report
reportViewer1.RefreshReport();
就像厄爾尼諾提到的那樣,這可以推到輔助功能中。例如:
Private void Convert_LocalReport_To_ReportViewer(LocalReport Param_MyLocalReport, ReportViewer param_MyReportViewer)
{
...copy the same code here...
}
我這樣做是因爲95%的時間用戶不會查看報告。所以ReportViewer沒有用處。幾乎所有的請求最終都會使用_Report.Render。 – Jmyster 2012-02-09 21:45:42
Render方法將輸出一個流。你特別說過你想在ReportViewer上查看它,不是嗎? :)無論如何,我很高興如果它按照你想要的方式實現了。 – 2012-02-10 03:20:02
這不是我想要的方式。以前,我的用戶沒有查看報告,因此我使用報告對象通過_Report.Render流式傳輸大部分輸出。我的用戶現在希望能夠查看報告,因此我必須將其放入報告查看器中。我有很多返回LocalReport對象的代碼。我只是問,如何將一個LocalReport對象設置爲一個報表查看器?你會認爲它會像_rv.LocalReport = _Report一樣簡單,但事實並非如此。是否有可能做到這一點? – Jmyster 2012-02-10 18:09:01