← 返回所有博客文章

本文结合C1ReportDesigner设计器,讲述了如何在WPF平台下简单的绑定C1Report到ObservableCollection数据源

具体的步骤如下所示:

1.创建报表定义文件

为了实现绑定,首先我们需要一个报表定义文件(XML),它将会导入到Report类中。

我们可以使用C1ReportDesigner应用来创建一个新的报表文件。根据本文的实现,我们需要创建一个非绑定的报表。

最简单的方式就是使用C1Report向导创建新报表。在报表向导中单击Application按钮,然后选择New菜单创建新报表。通过C1Report向导,在Report tabs里单击New Report按钮。如图所示:

C1reportCollection1

因为我们需要一个非绑定报表,在数据源界面单击Next按钮,然后忽略所有设置单击下一步按钮。在最后一页,给报表设置名字"C1Report_ListDataSource",然后选择选项"Modify the Report’s Design"。单击完成。

开始定义Field标题。然后根据数据源里的标题,拖拽标签到Page Header section。接下来,设置他们的文字属性:

1Title

2Name

3Basic

4Salary

5Department

6Subject

如上的名字和数据源里的Field名字相同。

下面就移到Details Section,将绑定到数据源的相应的标签定位到这里。将这些标签的Text 属性设置为上面列出的文字。注意,需要将Calculated属性设置为True。

c1reportCollectionCalculated

当我们创建报表,选择应用按钮然后选择保存,保存这个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;

 

最后,运行程序,实现的结果如下图所示:

c1reportCollectionOutput

 

本文的示例如下所示:

WPF_Report_ListBinding.zip (11.57 kb)

 

如果你对ComponentOne感兴趣,请到我们的官网下载最新版本:/download/?pid=6

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-138.html