【问题标题】:Feed RDLC (Local) report report from List (Entity FrameWork)从列表(实体框架)馈送 RDLC(本地)报告报告
【发布时间】:2016-08-01 07:01:32
【问题描述】:
我给自己找了一个 BiningList 的学生(实体框架创建的类)。
我只想从中提供我的 RDLC 报告,而不是使用 DataSet 或存储过程。
该类包含多个属性,例如:
string Name;
string FamilyName;
string Mid;
DateTime Birth;
...
谁能帮帮我?
【问题讨论】:
标签:
c#
winforms
entity-framework
report
rdlc
【解决方案1】:
选项 1 - 使用设计器
- 按 Ctrl +Shift +A 或从“添加新项目”窗口>项目”菜单选择“添加新项目...”。
- 从窗口中选择报告向导
- 在“报表向导”窗口中,单击“数据源”组合框前面的“新建...”按钮。
- 完成“数据源配置向导”。在第一页选择 Object 并单击 Next 按钮,然后在下一页中,从树中找到您的业务对象并选中它附近的复选框并单击 Finish 按钮关闭数据源配置向导。
- 完成“报告向导”。业务对象将被选为报表的数据源,所以按照向导点击Next,然后在'Arrange Fields'页面中,添加一些来自'可用字段' 到'Σ 值' 列表。下一页中的“选择布局”和“选择样式”并点击Finish。
- 打开
Form 并从工具箱 中将Report Viewer 控件放在表单上。
- 点击,然后从组合框中点击“Choose Report”,打开“Report Viewer Tasks”。然后将
BindingSource 添加到表单中。
-
双击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 的名称。要查看它,请打开报表并在“报表数据”窗口中的“数据集”节点下查看数据集名称。
如果您使用ReportEmbeddedResource 设置报告,则该属性应为嵌入资源中报告的名称。如果它以项目的默认名称空间开头,如果您的报告位于解决方案资源管理器的文件夹中,则以文件夹名称继续,最后是报告的名称。