从列表(实体框架)提供RDLC(本地)报告报告

时间:2016-08-01 07:01:32

标签: c# winforms entity-framework report rdlc

我得到了BiningList学生(实体框架创建的课程)。

我只想从中提供RDLC报告,而不是使用DataSet或存储过程。

此类包含多个属性,如:

string Name;
string FamilyName;
string Mid;
DateTime Birth;
...

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

选项1 - 使用设计器

  1. Ctrl + Shift + A 或从'打开'添加新项'窗口>项目'菜单选择'添加新项目... '。
  2. 在窗口中,选择报告向导
  3. 在“报告向导”窗口中,点击“数据源”组合框前面的“新建... ”按钮。< / LI>
  4. 完成“数据源配置向导”。在第一页中选择对象,然后点击下一步按钮,然后在下一页中,从树中找到您的业务对象并选中其旁边的复选框,然后点击完成< / strong>按钮关闭数据源配置向导。
  5. 完成“报告向导”。将选择业务对象作为报告的数据源,因此请按照向导单击下一步,然后在“排列字段”页面中,添加一些文件来自'<强>可用字段'到'Σ值'通过拖放列表。在下一页的“选择布局”和“选择一种风格”中,然后点击完成
  6. 打开Form,然后从工具箱中将Report Viewer控件放在表单上。
  7. 点击Smart tag icon,然后点击组合框中的“选择报告”,打开“报告查看器任务”。然后,BindingSource将添加到表单中。
  8. 双击Form处理Load事件并将此代码添加到事件处理程序中:

    var data = db.Students.ToList();        
    this.studentBindingSource.DataSource = data;
    this.reportViewer1.RefreshReport();
    
  9. 选项2 - 使用代码

    在表单上放置ReportViewer控件并处理表单的Load事件并编写此代码:

    var data = db.Students.ToList();
    var reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource();
    reportDataSource1.Name = "DataSet1"; 
    reportDataSource1.Value = data;             
    this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
    this.reportViewer1.LocalReport.ReportEmbeddedResource = "ReportSample.Report1.rdlc";
    this.reportViewer1.RefreshReport();
    

    reportDataSource1.Name应在报告定义中为DataSet的名称。要查看它,请打开报告,然后在“报告数据”窗口的“数据集”节点下,查看数据集名称。

    如果使用ReportEmbeddedResource设置报告,则该属性应为嵌入资源中报告的名称。如果它以项目的默认名称空间开头,并且如果您的报告位于解决方案资源管理器中的文件夹中,并且最后是报告名称,则继续使用文件夹名称。