private void simpleButton1_Click(object sender, EventArgs e)
        {
            XtraReport   report  = new XtraReport();
            NwindDataSet dataSet = FillDataSet();

            report.DataSource = dataSet;
            report.DataMember = dataSet.Customers.TableName;

            CreateReportHeader(report, "Runtime Generated Customer-Orders report", Color.PowderBlue, 32);
            CreateDetailBand(report, dataSet.Customers, "Customers", Color.Silver, false);
            CreateGrouping(report);

            switch (radioGroup1.SelectedIndex)
            {
            case 0:
                CreateDetailReportBasedOnSubreport(report);
                break;

            case 1:
                CreateDetailReportBasedOnDetailReportBand(report);
                break;
            }

            report.ShowPreviewDialog();
        }
        private NwindDataSet FillDataSet()
        {
            //Filling DataTables
            NwindDataSet dataSet = new NwindDataSet();

            NwindDataSetTableAdapters.CustomersTableAdapter custAdapter  = new NwindDataSetTableAdapters.CustomersTableAdapter();
            NwindDataSetTableAdapters.OrdersTableAdapter    orderAdapter = new NwindDataSetTableAdapters.OrdersTableAdapter();

            custAdapter.Fill(dataSet.Customers);
            orderAdapter.Fill(dataSet.Orders);

            return(dataSet);
        }
        private void CreateDetailReportBasedOnDetailReportBand(XtraReport report)
        {
            //Create a Detail Report
            DetailReportBand detailReport = new DetailReportBand();

            report.Bands.Add(detailReport);
            //Init Styles at the level of the RootReport
            InitStyles(report);

            //Generate the DataMember based on data relations
            NwindDataSet ds = report.DataSource as NwindDataSet;
            string       detailDataMember = string.Format("{0}.{1}", ds.Tables[report.DataMember].TableName,
                                                          ds.Relations[0].RelationName);

            detailReport.DataSource = ds;
            detailReport.DataMember = detailDataMember;

            //Create bands
            CreateReportHeader(detailReport, "Orders", Color.Gold, 16);
            CreateDetailBand(detailReport, ds.Orders, detailDataMember, Color.Transparent, true);
        }
        private void CreateDetailReportBasedOnSubreport(XtraReport report)
        {
            //Create a Subreport
            XRSubreport subreport  = new XRSubreport();
            DetailBand  detailBand = report.Bands[BandKind.Detail] as DetailBand;

            detailBand.Controls.Add(subreport);

            subreport.LocationF = new PointF(0, detailBand.HeightF);
            subreport.WidthF    = report.PageWidth - report.Margins.Right - report.Margins.Left;
            //Create a detail Report
            XtraReport detailReport = new XtraReport()
            {
                DataSource = report.DataSource, DataMember = "Orders"
            };

            InitStyles(detailReport);

            subreport.ReportSource = detailReport;
            //Create bands
            CreateReportHeader(detailReport, "Orders", Color.Gold, 16);

            NwindDataSet ds = report.DataSource as NwindDataSet;

            CreateDetailBand(detailReport, ds.Orders, "Orders", Color.Transparent, true);

            //Add a parameter for filtering
            Parameter param = new Parameter()
            {
                Name = "custID", Type = typeof(string), Visible = false, Value = string.Empty
            };

            detailReport.Parameters.Add(param);
            detailReport.FilterString = "[CustomerID]==?custID";

            //Handle the Subreport.BeforePrint event for filtering details dynamically
            subreport.BeforePrint += subreport_BeforePrint;
        }