首页 > 代码库 > DevExpress主从表 按组分页一组不足一页为一页--以此记录
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
此例可以应用于,单据的打印,多单据连打,根据自己需要发挥!
示例代码下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。