Developer ExpressのXtraReportデータを動的にバインドする方法

6267 ワード

XtraReportレポートエディタの保存は、ファイルとして保存できるので、ファイルからロードする方法を提供するはずです.このとき、XtraReportにはLoadLayoutの方法があり、レポートファイルをロードすることができます.そのリロード方法はIOからです.Streamにレポート・ファイルをロードします.つまり、このレポート・テンプレートをさらにデータベースにバイナリで保存することができます.必要に応じて、データベースから呼び出します.
私たちはXtraReportのテンプレートを設計する時、その分析方法を書き直して、1つはデータソースに入って、1つはありません.コードは次のとおりです.
      public XtraReport1()

        {

            InitializeComponent();



        } //  

       public XtraReport1(DataSet ds)// 

        {

            InitializeComponent();

            SetDataBind(ds);

        }



        private void SetDataBind(DataSet ds)// 

        {

            DataSource=ds;   

            this.xrTableCell4.DataBindings.Add("Text", DataSource, "test1");

            this.xrTableCell5.DataBindings.Add("Text", DataSource, "test1");

        }
        private void simpleButton1_Click(object sender, System.EventArgs e)

        {



            XtraReport1  xrpt1=new XtraReport1(GetTempDataSet());

            xrpt1.ShowPreviewDialog();

        }

        private DataSet GetTempDataSet()

        {

            DataSet ds=new DataSet();

            DataTable dt=new DataTable("tempTable");

            dt.Columns.Add("test1",Type.GetType("System.String"));

            dt.Columns.Add("test",Type.GetType("System.String"));

            dt.Columns.Add("test3",Type.GetType("System.String"));

            dt.Columns.Add("test4",Type.GetType("System.String"));

            dt.Columns.Add("test5",Type.GetType("System.String"));

            dt.Columns.Add("test6",Type.GetType("System.String"));

            dt.Columns.Add("test7",Type.GetType("System.String"));

            DataRow tempRow;              

            for (int i=0;i<7;i++)//i:Row

            {

                tempRow=dt.NewRow();

                tempRow[0]=i.ToString();

                tempRow[1]=i.ToString();

                tempRow[2]=i.ToString();

                tempRow[3]=i.ToString();

                tempRow[4]=i.ToString();

                tempRow[5]=i.ToString();

                tempRow[6]=i.ToString();

                dt.Rows.Add(tempRow);

            }



            ds.Tables.Add(dt);

            return ds;

        }
 , DaTaSet DaTaSet。
                DataColumn parentColumns;

                DataColumn childColumns;

                parentColumns = ds.Tables["Suppliers"].Columns["SupplierID"];

                childColumns = ds.Tables["Products"].Columns["SupplierID"];

                DataRelation dsdr1 = new DataRelation("fk_1", parentColumns, childColumns);

                ds.Relations.Add(dsdr1);



                DataRelation dsdr2 = new DataRelation("fk_2", ds.Tables["Products"].Columns["ProductID"], ds.Tables["OrderDetails"].Columns["ProductID"]);

                ds.Relations.Add(dsdr2);

テンプレートにデータをバインドすると、上の表とは大きく異なりますが、中のバインドは、バインド関係の外部キーを参照していることを覚えておいてください.つまり、次のコードです.
        public XtraReport1(DataSet ds)

        {

            InitializeComponent();

            SetDataBing(ds);

        }

        private void SetDataBing(DataSet ds)

        {

          

            DataMember = "Suppliers";

            DataSource = ds;





            this.cellCompanyName.DataBindings.Add("Text", DataSource, "Suppliers.CompanyName");

            this.sContadName.DataBindings.Add("Text", DataSource, "Suppliers.ContadName");

            this.sCountry.DataBindings.Add("Text", DataSource, "Suppliers.Country");

            this.sContactTitle.DataBindings.Add("Text", DataSource, "Suppliers.ContactTitle");

            this.sRegion.DataBindings.Add("Text", DataSource, "Suppliers.Region");

            this.sPhone.DataBindings.Add("Text", DataSource, "Suppliers.Phone");

            this.sCity.DataBindings.Add("Text", DataSource, "Suppliers.City");

            this.sFax.DataBindings.Add("Text", DataSource, "Suppliers.Fax");

            this.sPostalCode.DataBindings.Add("Text", DataSource, "Suppliers.PostalCode");

            this.sHomePage.DataBindings.Add("Text", DataSource, "Suppliers.HomePage");

            this.sAddress.DataBindings.Add("Text", DataSource, "Suppliers.Address");

            this.sCompanyName.DataBindings.Add("Text", DataSource, "Suppliers.CompanyName");



            DetailReport.DataMember = "fk_1";

            DetailReport.DataSource = DataSource;



            this.pProductName.DataBindings.Add("Text", DataSource, "fk_1.ProductName");

            this.pProductID.DataBindings.Add("Text", DataSource, "fk_1.ProductID");

            this.pCategory.DataBindings.Add("Text", DataSource, "fk_1.CategoryID");

            this.pUnit.DataBindings.Add("Text", DataSource, "fk_1.QuantityPerUnit");

            this.pUnitPrice.DataBindings.Add("Text", DataSource, "fk_1.UnitPrice");

            this.pDiscontinued.DataBindings.Add("Text", DataSource, "fk_1.Discontinued");



            DetailReport1.DataMember = "fk_1.fk_2";

            DetailReport1.DataSource = DataSource;



            this.oOrderID.DataBindings.Add("Text", DataSource, "fk_1.fk_2.OrderID");

            this.oQuantity.DataBindings.Add("Text", DataSource, "fk_1.fk_2.Quantity");

            this.oDiscount.DataBindings.Add("Text", DataSource, "fk_1.fk_2.Discount");



            this.oUnitPrice.DataBindings.Add("Text", DataSource, "fk_1.fk_2.UnitPrice");



            

        }
this.pProductName.DataBindings.Add("Text", DataSource, "fk_1.ProductName") ,"fk_1.ProductName"
 , , 。