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格式如下所示,至此,大功告成!

    

posted on 2017-02-11 20:31  Joye_Zhou  阅读(2595)  评论(0编辑  收藏  举报

导航