有個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