DevExpress主從表 按組分頁一組不足一頁爲一頁--以此記錄

本文的主要是說明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

此例能夠應用於,單據的打印,多單據連打,根據本身須要發揮!

示例代碼下載

相關文章
相關標籤/搜索