Feed RDLC (Local) report report from List (Entity FrameWork)

Feed RDLC (Local) report report from List (Entity FrameWork)

我给自己一个 BiningList 的学生(Entity Framework 创建了 class)。

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

此 class 包含多个属性,例如:

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

有人可以帮我吗?

选项 1 - 使用设计器

  1. 通过按 Ctrl +Shift[=70= 打开“添加新项目”window ] +A 或从“项目”菜单中选择“添加新项目...”。
  2. 从window中选择报表向导
  3. 在“报表向导”window中,单击“[=]前面的“新建...”按钮35=]数据源'组合框。
  4. 完成“数据源配置向导”。在第一页中选择 Object 并单击 Next 按钮,然后在下一页中,从树中找到您的业务对象并选中它附近的复选框,然后单击 完成 按钮关闭数据源配置向导。
  5. 完成“报表向导”。业务对象将被选为报表的数据源,因此请按照向导单击 下一步,然后在“排列字段”页面中,通过拖放将一些文件从“可用字段”添加到“Σ 值”列表。在接下来的页面中“选择布局”和“选择样式”并单击完成
  6. 打开 Form 并从 工具箱 中将 Report Viewer 控件放在窗体上。
  7. 通过单击 打开“Report Viewer Tasks”,然后从组合框中单击“Choose Report”。然后会在表格中添加一个BindingSource
  8. 双击 Form 以处理 Load 事件并将此代码添加到事件处理程序:

    var data = db.Students.ToList();        
    this.studentBindingSource.DataSource = data;
    this.reportViewer1.RefreshReport();
    

选项 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 的名称。要查看它,请打开报表并在报表数据 window 的数据集节点下查看数据集名称。

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