• Dev Express Report 学习总结(二)关于如何使用Grouping分组


          对于所有的报表工具来说,基本上所有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; }
    }
    View Code

      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 = 2000;
    
            CitizenConsumption ce_12 = new CitizenConsumption();
            ce_12.ProviceName = "ShanXi";
            ce_12.ExpenseItem = "Clothing";
            ce_12.Expense = 1000;
    
            CitizenConsumption ce_13 = new CitizenConsumption();
            ce_13.ProviceName = "ShanXi";
            ce_13.ExpenseItem = "Travel";
            ce_13.Expense = 1000;
    
            CitizenConsumption ce_14 = new CitizenConsumption();
            ce_14.ProviceName = "ShanXi";
            ce_14.ExpenseItem = "MedicalCare";
            ce_14.Expense = 500;
    
            CitizenConsumption ce_21 = new CitizenConsumption();
            ce_21.ProviceName = "SiChuan";
            ce_21.ExpenseItem = "Food";
            ce_21.Expense = 2300;
    
            CitizenConsumption ce_22 = new CitizenConsumption();
            ce_22.ProviceName = "SiChuan";
            ce_22.ExpenseItem = "Clothing";
            ce_22.Expense = 800;
    
            CitizenConsumption ce_23 = new CitizenConsumption();
            ce_23.ProviceName = "SiChuan";
            ce_23.ExpenseItem = "Travel";
            ce_23.Expense = 1150;
    
            CitizenConsumption ce_24 = new CitizenConsumption();
            ce_24.ProviceName = "SiChuan";
            ce_24.ExpenseItem = "MedicalCare";
            ce_24.Expense = 490;
    
            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;
        }
    }
    View Code

           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);
            };
        }
    }
    View Code

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

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

        

  • 相关阅读:
    [原创]用C++类实现单向链表的增删查和反转操作
    [原创]c语言中const与指针的用法
    [原创]大连sap vt 实习生面试经历
    Android studio 相关错误处理
    Java 判断整数方法
    Android 网络编程
    Android 基础篇(二)
    Android ListView 的基本应用,包括缓存
    Java重点识记
    Android基础篇(一)
  • 原文地址:https://www.cnblogs.com/sccd/p/6389602.html
Copyright © 2020-2023  润新知