Developer ExpressのXtraReportデータを動的にバインドする方法
6267 ワード
XtraReportレポートエディタの保存は、ファイルとして保存できるので、ファイルからロードする方法を提供するはずです.このとき、XtraReportにはLoadLayoutの方法があり、レポートファイルをロードすることができます.そのリロード方法はIOからです.Streamにレポート・ファイルをロードします.つまり、このレポート・テンプレートをさらにデータベースにバイナリで保存することができます.必要に応じて、データベースから呼び出します.
私たちはXtraReportのテンプレートを設計する時、その分析方法を書き直して、1つはデータソースに入って、1つはありません.コードは次のとおりです.
テンプレートにデータをバインドすると、上の表とは大きく異なりますが、中のバインドは、バインド関係の外部キーを参照していることを覚えておいてください.つまり、次のコードです.
私たちは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"
, , 。