本文的主要是說明Dev的報表的主從表,主從表的每一組顯示在一頁,當一組超出一頁,第二頁只顯示第一組的。測試
1、每上報表設置圖this
簡單設計圖如上spa
2、後臺代碼設計
報表頁代碼code
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");//綁定小計(當前單據的總金額) } }
前臺調用代碼blog
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(); }
主從表代碼如上get
設計重點it
一、加分頁頭io
二、構建主從表數據class
三、設置DetailReport PageBreak爲AfterBand
此例能夠應用於,單據的打印,多單據連打,根據本身須要發揮!