本文结合C1ReportDesigner设计器,讲述了如何在WPF平台下简单的绑定C1Report到ObservableCollection数据源。
具体的步骤如下所示:
1.创建报表定义文件
为了实现绑定,首先我们需要一个报表定义文件(XML),它将会导入到Report类中。
我们可以使用C1ReportDesigner应用来创建一个新的报表文件。根据本文的实现,我们需要创建一个非绑定的报表。
最简单的方式就是使用C1Report向导创建新报表。在报表向导中单击Application按钮,然后选择New菜单创建新报表。通过C1Report向导,在Report tabs里单击New Report按钮。如图所示:
因为我们需要一个非绑定报表,在数据源界面单击Next按钮,然后忽略所有设置单击下一步按钮。在最后一页,给报表设置名字"C1Report_ListDataSource",然后选择选项"Modify the Report’s Design"。单击完成。
开始定义Field标题。然后根据数据源里的标题,拖拽标签到Page Header section。接下来,设置他们的文字属性:
1Title
2Name
3Basic
4Salary
5Department
6Subject
如上的名字和数据源里的Field名字相同。
下面就移到Details Section,将绑定到数据源的相应的标签定位到这里。将这些标签的Text 属性设置为上面列出的文字。注意,需要将Calculated属性设置为True。
当我们创建报表,选择应用按钮然后选择保存,保存这个Report Definition File。设计器保存报表文件为XML格式。设计器可以读取识别这个格式的文件,它也可以被C1Report控件读取。
本文中将报表文件保存为SampleReport.xml.。
2.定义集合对象数据源
如下的类定义了报表的数据源。类里的数据成员和报表里在标签控件的Text 域名字保持一致。
具体参考代码:
public class Person { public string Title { get; set; } public string Name { get; set; } public int Basic { get; set; } public int Salary { get; set; } public string Department { get; set; } public string Subject { get; set; } } public class ReportDataSource : ObservableCollection { public ReportDataSource() : base() { for (int i = 0; i < 400; i++) { Person p = new Person(); p.Name = "Name" + i.ToString(); p.Title = "Mr"; p.Basic = 10000; p.Salary = 20000; p.Department = "Department" + i.ToString(); p.Subject = "Subject" + i.ToString(); Add(p); } } }
3.导入报表和分配数据源
首先在XAML文件里拖拽一个C1DocumentViewer,生成代码如下:
<Grid> <c1pr:C1DocumentViewer Name="C1DocumentViewer1"/> </Grid>
导入之前保存的XML文件,如下的代码将展示导入报表文件和连接数据源:
C1Report rpt = new C1Report(); rpt.Load(@"..\..\SampleReport.xml", "C1Report_ListDataSource"); //Create Object for ObservableCollection ReportDataSource persons = new ReportDataSource(); rpt.DataSource.Recordset = persons; C1DocumentViewer1.Document = rpt.FixedDocumentSequence;
最后,运行程序,实现的结果如下图所示:
本文的示例如下所示:
WPF_Report_ListBinding.zip (11.57 kb)
如果你对ComponentOne感兴趣,请到我们的官网下载最新版本:/download/?pid=6
如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-138.html