有个winfrom项目要使用报表,数据来源于自定义类(model),从网上找了好多教程,都是说如何拖控件,如何设值之类的。没有我想要的效果。
我想要的效果:将rdlc文件放到Debug目录下,以便一些特殊格式的修改!
实现从自定义的类中读取数据。而不是C#封装的数据源 DataSet中。
吐槽完毕!
源代码及过程:
第一步:新建form和一个rdlc文件。在新建一个类,作为数据的model,并写出获取此model的方法
class Users{public string Name { get; set; }public string Sex { get; set; }public Users(string name,string sex){this.Name = name;this.Sex = sex;}public Users(){}public List<Users> getList(){List<Users> listuser = new List<Users>();listuser.Add(new Users("aaaa","ddd"));listuser.Add(new Users("bbbb", "cccc"));listuser.Add(new Users("eeee", "ffff"));return listuser;}
第二步:在新类中添加字段或属性。添加完毕后生成项目。
第三步:在vs2010中打开rdlc文件,然后添加数据源
选择 对象 -下一步 选择数据model类 点击 完成。
第四步:在左侧的数据源 视图中 会出现刚才选则的类,里面有自定义的属性或字段,如果没有,点上面的刷新按钮就会出现。
在rdlc上添加表或其它你所需要的控件。然后根据你的排版选择里面的字段。
第五步:在from中拖入reportview控件。然后再form_load事件中添加 以下代码:
Users u=new Users();reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\ReportTest.rdlc";reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("ds",u.getList()));this.reportViewer1.RefreshReport();
原文地址:http://www.gotreportviewer.com/
http://www.gotreportviewer.com/objectdatasources/index.html