DevExpress主从表 按组分页一组不足一页为一页--以此记录

本文的主要是说明Dev的报表的主从表,主从表的每一组显示在一页,当一组超出一页,第二页只显示第一组的。

一、每上报表设置图

简单设计图如上

二、后台代码

报表页代码

public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport
    {
        public XtraReport1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 设置主从表的数据源
        /// </summary>
        /// <param name="reportData"></param>
        public void SetReportDataSource(DataSet reportData)
        {
            //因涉及到修改DataSet的内部属性,建议创建副本进行操作。
            DataSet ds = reportData.Copy();//创建副本

            //重要!!!给组(GroupHeader)绑定主键字段
            //本报表是按业务单号分组
            GroupField gf = new GroupField("ID", XRColumnSortOrder.Ascending);
            GroupHeader1.GroupFields.Add(gf);

            //给数据集建立主外键关系
            DataColumn parentColumn = ds.Tables["t1"].Columns["ID"];
            DataColumn childColumn = ds.Tables["t2"].Columns["ID"];
            DataRelation R1 = new DataRelation("R1", parentColumn, childColumn);
            ds.Relations.Add(R1);

            //绑定主表的数据源
            this.DataMember = "t1";
            this.DataSource = ds;
            this.xrLabel2.DataBindings.Add("Text", ds, "t1.ID");  

            //绑定明细表的数据源
            this.DetailReport.DataMember = "R1";
            this.DetailReport.DataSource = ds;

            this.xrLabel5.DataBindings.Add("Text", ds, "R1.ID");
            this.xrLabel6.DataBindings.Add("Text", ds, "R1.Name");

            xrLabel3.DataBindings.Add("Text", ds, "R1.ID");//绑定小计(当前单据的总金额)
            xrLabel4.DataBindings.Add("Text", ds, "R1.ID");//绑定小计(当前单据的总金额)
        }
    }

前台调用代码

private void simpleButton1_Click(object sender, EventArgs e)
        {
            XtraReport1 xtra = new XtraReport1();
            DataSet ds = new DataSet();
            DataTable dt1 = new DataTable("t1");
            dt1.Columns.Add("ID",Type.GetType("System.String"));

            DataTable dt2 = new DataTable("t2");
            dt2.Columns.Add("ID",Type.GetType("System.String"));
            dt2.Columns.Add("Name",Type.GetType("System.String"));

            for (int i = 0; i < 3; i++)
            {
                DataRow dt1Dr = dt1.NewRow();
                dt1Dr["ID"] = i.ToString();
                dt1.Rows.Add(dt1Dr);
                for (int j = 0; j < 39; j++)
                {
                    DataRow dt2Dr = dt2.NewRow();
                    dt2Dr["ID"] = i.ToString();
                    dt2Dr["Name"] = j.ToString() + "测试";
                    dt2.Rows.Add(dt2Dr);
                }
            }
            ds.Tables.Add(dt1);
            ds.Tables.Add(dt2);

            xtra.SetReportDataSource(ds);
            xtra.ShowPreviewDialog();
        }

主从表代码如上

设计重点

1、加分页头

2、构建主从表数据

3、设置DetailReport PageBreak为AfterBand

此例可以应用于,单据的打印,多单据连打,根据自己需要发挥!

示例代码下载

DevExpress主从表 按组分页一组不足一页为一页--以此记录

时间: 2024-08-24 17:28:55

DevExpress主从表 按组分页一组不足一页为一页--以此记录的相关文章

在DevExpress程序中使用Winform分页控件直接录入数据并保存

一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数据,这种对于字段比较少,而且内容相对比较简单的情况下,效率是比较高的一种输入方式.本篇随笔主要介绍在DevExpress程序中使用GridView直接录入数据并保存的实现,以及使用Winform分页控件来进行数据直接录入的实现操作. 1.在GridView上展示数据 在GridView上展示数据,只

DEV主从表

1.主从表隐藏表格展开按钮. 当主表内容不包含子表时候隐藏,主从表加号图标.效果如下图. 实现代码 private void gvMain_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { if (gvMain.IsMasterRowEmpty(e.RowHandle) == true && e.Column.VisibleIndex == 0) { va

Winform开发框架之单据窗体生成(主从表,流水单号)

源码地址:https://github.com/GarsonZhang/GZFramework.ShareDemo 前言 1.在开始本节前请先重置代码为 chapter-03-start 懒人地址:https://github.com/GarsonZhang/GZFramework.ShareDemo/tree/chapter-03-start 2.创建表(商品入库主表/明细) 创建脚本目录:数据库脚本/Chapter-03新建商品入库表(主从表).sql 3.新建生成单据流水号所需的表和存储过

GZFramwork数据库层《三》普通主从表增删改查

运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGenerate/ 生成方式见第一节: GZFramwork数据库层<一>普通表增删改查   生成明细表ORM略有不同: 项目附加结果:   新增一个自定义控件:ucTableMD 界面:   后台代码: using System; using System.Colle

DevExpress中实现GridControl的分页功能

DevExpress中如何实现GridControl的分页功能 简介:DevExpress中如何实现GridControl的分页功能, 主要是利用DataNavigator和GridControl组合,自定义事件实现分页功能 接下来,我们就去实现分页功能,先看下效果图: ------------------------------------------------------------------------------------------------------------------

RDIFramework.NET 中多表关联查询分页实例

RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为指导思想,作为异质系统整合与互操作性.分布式应用提供了可行的解决方案. 分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的RDIFramework.NET来实现多表

ITOO级联删除主从表

成绩系统有一个需求:数据字典有主从表,要求删除主表时候连同从表信息(跟牛腩中删除新闻时级联删除新闻评论相通),之前做好的那个版本中只删除主表数据,而且是按照主表数据的名称来删除,如果有重名的话还需做验证(感觉不太合理),现在需要做的是按照主表的ID来删除从表,主表的ID也能从页面拿到. 我的思路:主表的html中引用主从表两个js,主从表的调用的button的click方法名称相同,但结果它只能找到执行其中的一个方法,结果主表删除后从表没有反应. 后来李游给我思路:删除从表的js代码写在主表的触

框架-主从表

页面直接通过查询语句取值方法 // DataTable页面查询语句取值方法 DataTable dtTable = DbService.Instance().QueryDataTable("select * from TrainErp_Product_LevelAfter where ProductCode='" + DbService.DtV(curMainDataTable, "ProductCode") + "' and LevelCode='&qu

easyui主从表实现

今天用easyui做了一个主从表的查询,当然后续还会做编辑功能,用的是firefox debug ,感觉跟踪起来还是比较方便,以前做delphi开发,不用注意大小写问题,今天用easyui做前端时,让我痛苦了半天,前端的字段名用的大写,后端转来的json字段是小写,怎么搞数据都不显示,只是显示多少行,还有后台用的php,也是区分大小写的,post传的是大写参数名,处理POST参数时,却写的是小写参数名,一开始没留意,也是郁闷了半天才搞定. 以前做c/s程序开发,现在开发web的功能多了,感觉WE