新建报表在设计界面共有九个区域TopMargin、ReportHeader、PageHeader、GroupHeader、Detail、GroupFooter、PageFooter、ReportFooter、BottomMargin.根据需求可以自定义要增加(界面右键Insert Band)、删除(界面右键Delete)。
一、 区域介绍
TopMargin:文本上边距——用来设置报表中每一页的空白上边距。
ReportHeader:报表头——是显示报表的头部,只显示一次,与报表的页数无关,只在报表的第一页的头部显示,可以包括报表名称等内容。
PageHeader:页头——内容显示在每一页的首部,第一页则显示在ReportHeader下面,一般把列名称放在这里。
GroupHerder:分组头——如果将数据分组,则GroupHeadar内容会显示在每一组分组的头部。
Detail:正文部分——再每一页的中间部分,用于数据的填充。
注:放在这里的Table不要设置上边框这样在列表显示时,不会因为边框重合而引起边框宽度增加
GroupFooter:分组尾——如果将数据分组,则GroupHeadar内容会显示在每一组分组的头部。
PageFooter:页尾——内容显示在整个报表的末尾,可以在这里放置总汇总。
ReportFooter:报表尾——内容显示在整个报表的末尾。
BottomMargin:文本下边距——用来设置报表中每一页的空白下边距。
二、 数据的绑定
写一个公共的方法,这样就不用每次都写一大堆类似的代码绑定数据了,例如:
public static class Common
{
public static void SetBinding(int len, XRTable
{
for (var
{
var s = "C" + i.ToString("0#");
var
if (tc == null) continue;
tc.DataBindings.AddRange(new[] { new XRBinding("Text", null, s) });
}
}
}
这样每次在绑定数据时就不用那么麻烦了,在后台代码添加这样一句就搞定,Common.SetBinding(8, xrTable2); 属性说明:所绑定的列数,绑定的控件
注:在这里回传的数据要是有规律的……。
如果回传的数据没有规律的话,那也没关系,可以在后台代码中写一个绑定方法,给每一个单元格分别设置.DataBindings.Add("Text",数据源,绑定数据的名称);
private void
{
this.xrTableCell1.DataBindings.Add("Text", DataSource, "id");
this.xrTableCell2.DataBindings.Add("Text", DataSource, "name");
this.xrTableCell3.DataBindings.Add("Text", DataSource, "sex");
this.xrTableCell4.DataBindings.Add("Text", DataSource, "age");
this.xrTableCell5.DataBindings.Add("Text", DataSource, "wage");
}
三、 汇总实现
实现汇总,如总计、平均值、百分比、最大、最小等等
在这里以总计来做事例:首先,拖拽一个XRLabel,放在任何你想放的地方,当然我们一般放在ReportHeader或ReportFooter中,点击XRlabel的Summary属性,就会弹出如图所示部分
在这里可以分别设置绑定列(Bound field),汇总函数类型(Summary function),结果显示的字符串格式(Format String),是否忽略空值(Ignore NULL values),汇总类型(Sumarry Running)。
Sumarry Running:汇总类型有多种形式,有按组汇总,按页汇总,整个报表汇总。
汇总属性设置完毕,还要给这个控件绑定数据,在后台绑定其他控件的地方加上这句:
this.xrLabel1.DataBindings.Add("Text", DataSource, "wage");
OK这就是汇总,大功告成。
分类汇总
当然这只是一个简单的汇总而已,而我们正真用到的可不仅仅是这些,在做报表的时候,经常会用到分类汇总,所以在这里单独列出来。
首先,添加一个GroupHeader,在后台代码里设置这样一句代码,设要分组的绑定列
GroupHeader1.GroupFields.AddRange(new
DevExpress.XtraReports.UI.GroupField[]{new DevExpress.XtraReports.UI.GroupField("C07", DevExpress.XtraReports.UI.XRColumnSortOrder.Ascending) });
在GroupHeader中放置一个XRLabel 绑定要分组的数据项:XRLabel2.DataBindings.Add("Text", datatable, "C07");
然后,根据你分组统计要现实的地方,放置一个XRLabel,一般放在每次分组后的下一行,如图:
这样的话,就把XRLabel放在GroupFooter中对应的地方
xrLabel3.DataBindings.Add("Text", datatable, "所要合计的列的数据项");