2011-05-20 83 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/

相关问题