对于所有的报表工具来说,基本上所有Grouping功能的都很相似。正如前面说到的,Group处于Page Header和Page Footer之间,同时又将Detail包括与其中。

  下面还是通过一个例子来进行说明。这个例子的主要功能是显示山西和四川两省的居民平均消费水平,主要从食品,服装,医疗及旅行这四方面来进行分组并按省进行小计及最后总的合计。此外,当前这个例子主要通过class进行数据源的的绑定,其具体的操作步骤如下所示:

  1. 创建新的报表解决方案,同时创建三个项目,一个为Class Library项目,一个为Report项目,另一个为控制台项目,主要用来对report进行调用并测试。三者的依赖关系为:Report项目依赖类库项目,而控制台项目则依赖类库项目和Report项目;

  2. 在类库项目中添加一个类CitizenConsumption并编译该项目,内容如下:

public class CitizenConsumption
{
public String ProviceName { get; set; }
public String ExpenseItem { get; set; }
public Decimal Expense { get; set; }
}

  3. 在Report项目中添加对类库项目的引用,新建空的Report页面,然后进行如下的操作:

      A.  在当前Report页面上添加ReportHeader,ReportFooter,GroupHeader及Group Footer;

      B.  从Toolbox中的Data类别中找到BindingSource控件并拖到当前的Report页面上,可以通过点击工具栏中的XtraReports->Report Explorer找到它。右击它的属性,在它的DataSource属性中通过点击Add Project Data Source把CitizenConsumption作为它的数据源;

      C.  在工具栏中,点击XtraReports->Field List,来显示我们我们可以使用的列。在任意一列上选择右键来创建CalculatedField,主要用来对消费的金额进行合计,表达式为:sum([Expense]);

      D.  在当前的Report页面上新建XRLabel并绑定列到相应的XRLabel上,完成后的结果如下所示(PS.Sum([Expense])需要将Summary Running设置为Group):

           

       E. 编译当前project。

  4. 在控制台项目中添加对上述两个project的引用然后进行如下的操作:

     A.  添加类DataPreparation,具体如下所示:

public class DataPreparation
{
public List<CitizenConsumption> GetCitizenConsumptionList()
{
List<CitizenConsumption> AEList = new List<CitizenConsumption>(); CitizenConsumption ce_11 = new CitizenConsumption();
ce_11.ProviceName = "ShanXi";
ce_11.ExpenseItem = "Food";
ce_11.Expense = ; CitizenConsumption ce_12 = new CitizenConsumption();
ce_12.ProviceName = "ShanXi";
ce_12.ExpenseItem = "Clothing";
ce_12.Expense = ; CitizenConsumption ce_13 = new CitizenConsumption();
ce_13.ProviceName = "ShanXi";
ce_13.ExpenseItem = "Travel";
ce_13.Expense = ; CitizenConsumption ce_14 = new CitizenConsumption();
ce_14.ProviceName = "ShanXi";
ce_14.ExpenseItem = "MedicalCare";
ce_14.Expense = ; CitizenConsumption ce_21 = new CitizenConsumption();
ce_21.ProviceName = "SiChuan";
ce_21.ExpenseItem = "Food";
ce_21.Expense = ; CitizenConsumption ce_22 = new CitizenConsumption();
ce_22.ProviceName = "SiChuan";
ce_22.ExpenseItem = "Clothing";
ce_22.Expense = ; CitizenConsumption ce_23 = new CitizenConsumption();
ce_23.ProviceName = "SiChuan";
ce_23.ExpenseItem = "Travel";
ce_23.Expense = ; CitizenConsumption ce_24 = new CitizenConsumption();
ce_24.ProviceName = "SiChuan";
ce_24.ExpenseItem = "MedicalCare";
ce_24.Expense = ; AEList.Add(ce_11);
AEList.Add(ce_12);
AEList.Add(ce_13);
AEList.Add(ce_14); AEList.Add(ce_21);
AEList.Add(ce_22);
AEList.Add(ce_23);
AEList.Add(ce_24);
return AEList;
}
}

       B.  添加新的WinForms页面,添加按钮并触发其Click事件,Click的具体内容如下所示:

private void btnConfirm_Click(object sender, EventArgs e)
{
var dataprep = new DataPreparation();
using (var rpt = new ConsumptionExpense())
{
rpt.DataSource = (dataprep.GetAverangeExpenseList()); rpt.CreateDocument(); SaveFileDialog dlg = new SaveFileDialog();
dlg.DefaultExt = "pdf";
dlg.Filter = "Pdf documents (*.pdf)|*.pdf|All files (*.*)|*.*"; string filename;
if (dlg.ShowDialog() == DialogResult.OK)
{
filename = dlg.FileName;
rpt.ExportToPdf(filename);
MessageBox.Show("Exported to: " + filename);
};
}
}

    C. 设置该项目为起始项目。

   5. 点击F5运行,最终导出的PDF格式如下所示,至此,大功告成!

    

Dev Express Report 学习总结(二)关于如何使用Grouping分组的更多相关文章

  1. Dev Express Report 学习总结(八)Dev Express Reports 常见问题总结

    1. 在新建ASP.NET Dev Express Report时的两种方式: A. 右键Add DevExpress Item->New Item->All->从Web Repor ...

  2. Dev Express Report 学习总结(一) 基础知识总结

    Dev Express,一个非常优秀的报表控件.像其他报表一样,该报表也包括几个主要部分:Report Header,Page Header,Group Header,Detail,Group Foo ...

  3. Dev Express Report 学习总结(七)Dev Express Reports 常见知识点总结

    1. CalculatedField中常见表达式: A. For percent: [ValA]* 100 / ([ValA]+[ ValB]);           PS. Please remre ...

  4. Dev Express Report 学习总结(六)Dev Express Reports自定义Summary

    在我们使用DevExpress开发报表的过程中,对于页面中复杂的数据合计,我们可能会使用到自定义Summary.下面通过一个例子来进行说明: 首先,我建立了如上图所示的报表页面,其中的数据源来自cla ...

  5. Dev Express Report 学习总结(三)关于子报表Sub-Report的使用

    子报表即在一个Report(主报表)中嵌入另一个Report(子报表),从理论上来讲,任何一个Report都可以作为一个子报表,但在实际使用过程中,只有主报表和子报表构成一对多关系时才会使用子报表.使 ...

  6. Dev Express Report 学习总结(五)在分组中使用聚集表达式AggregateExpression

    聚集表达式AggregateExpression主要包括几种:Avg(),Count(),Exists(),Max(),Min(),Single()和Sum().其中对于Sum(),在我看来主要有两种 ...

  7. Dev Express Report 学习总结(四)Dev Express 动态生成XRTable使用总结

    1. XRTableCell常见属性  XRTableCell xrTableCell = new XRTableCell(); A. 字体及字体大小 xrTableCell.Font = new S ...

  8. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  9. muduo学习笔记(二)Reactor关键结构

    目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...

随机推荐

  1. JavaScript中的Array.prototype.slice.call()方法学习

    JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外 ...

  2. 数据结构_coprime_sequence(互质序列)

    coprime_sequence(互质序列) 问题描述 顾名思义,互质序列是满足序列元素的 gcd 为 1 的序列.比如[1,2,3],[4,7,8],都是互质序列. [3,6,9]不是互质序列.现在 ...

  3. android smali代码注入 实战一

    有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...

  4. boost.asio系列(一)——deadline_timer

    一.构造函数 一个deadline_timer只维护一个超时时间,一个deadline_timer不同时维护多个定时器.在构造deadline_timer时指定时间: basic_deadline_t ...

  5. ElementUI的表单和vee-validate结合使用时发生冲突的解决

    在Vue项目中使用ElementUI表单时,同时又引入了vee-validate进行使用的时候,在浏览器上会出现这样的报错: [Vue warn]: The computed property &qu ...

  6. 国内物联网平台(1):百度物接入IoT Hub

    国内物联网平台(1) ——百度物接入IoT Hub 马智 物接入IoT Hub - 架构 全托管的云服务,帮助建立设备与云端之间安全可靠的双向连接 支撑海量设备的数据收集.监控.故障预测等各种物联网场 ...

  7. 接口型模式(二)Bridge(桥接)模式

    目的: 将抽象与抽象方法的实现相分离,使得它们可以独自变化.常用于驱动程序中,使得顶层逻辑不受驱动底层改变的影响,如数据库的变化. 关键词:Bridge, 抽象与实现分离,驱动程序 必要性:从一般抽象 ...

  8. sql server时间戳timestamp

    sql server时间戳timestamp 在SQL Server中联机丛书是这样说的: SQL Server timestamp 数据类型与时间和日期无关.SQL Server timestamp ...

  9. 【转载】在AspNetCore 中 使用Redis实现分布式缓存

    原文地址:https://www.cnblogs.com/szlblog/p/9045209.html AspNetCore 使用Redis实现分布式缓存 上一篇讲到了,Core的内置缓存:IMemo ...

  10. python3中模块初识

    python的模块使用方法 1.用于显示python的环境变量 import sys print(sys.path) 运行路径执行结果如下: ['F:\\codes', 'F:\\codes', 'C ...