2011-05-20 45 views
4

如何使用LINQ查詢當地的報告(微軟報告)的數據源(的WinForms)? 我有一個Microsoft報表查看器控件在MyForm的,我有一個LINQ查詢,因爲這:使用LINQ查詢作爲微軟本地報表數據源(的WinForms)

var query = from colV in dal.v_TarafeGharardad join colT in dal.TBL_TarafeGharardad on colV.Id equals colT.PK_Id select colV; 

我想使用LINQ查詢作爲微軟報表數據源。 我試過這個,但我真的知道這是錯誤的。 ?

frmReportViewer ReportViewerForm = new frmReportViewer(); 
      ReportViewerForm.rptViewer.LocalReport.DataSources.Add(new ReportDataSource("v_TarafeGharardad",query)); 
      ReportViewerForm.rptViewer.LocalReport.ReportPath = Application.StartupPath + "rptTarafeGharardad.rdlc"; 
      ReportViewerForm.Show(); 

如何解決(感謝: - *)

更新:如果我能LINQ查詢轉換爲數據表,問題已經解決了。

回答

3

你在做什麼看起來非常正確。我做到這些(這是VB):

rptViewer.LocalReport.ReportPath = <filepath> 
rptViewer.LocalReport.DataSources.Clear() 
rptViewer.LocalReport.DataSources.Add(New ReportDataSource("<data_source_name_in_report>", <linq_query_result>)) 
rptViewer.SetDisplayMode(DisplayMode.PrintLayout) 

的一位,你需要檢查的是你的匹配數據源名稱在報表中正確。您可以通過在文本編輯器中打開報告並查看datasources元素來檢查這一點。

記憶中的另一件事,我大約一年沒用過這個,所以我可能是錯的,我有一個小竅門,你必須調用rptViewer.Refresh()rptViewer.SetDisplayMode()來強制它渲染。

看看這個網站,大量的信息對ReportViewer控件:

http://www.gotreportviewer.com/

相關問題