打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Developer Express 之 XtraReport如何动态绑定数据 - Cook...

Developer Express 之 XtraReport如何动态绑定数据

XtraReport报表编辑器里的保存,是可以保存为一个文件的,所以它应该提供了一个从文件加载的方法,这时我们可以发现XtraReport里有一个LoadLayout的方法,可以加载报表文件,它的重载方法是可以从IO.Stream里加载报表文件,也就是说,我们可以进一步的把这个报表模板以二进制的方式保存在数据库里。需要的时候,从数据库调用即可。

我们在设计XtraReport的模板的时候,重写它的析构方法,一个有传入数据源的,一个没有。代码如下:

01 public XtraReport1()
02   {
03       InitializeComponent();
04  
05   } //数据预览是有用 
06  public XtraReport1(DataSet ds)//构造函数重载
07   {
08       InitializeComponent();
09       SetDataBind(ds);
10   }
11  
12   private void SetDataBind(DataSet ds)//绑定数据源
13   {
14       DataSource=ds;   
15       this.xrTableCell4.DataBindings.Add("Text", DataSource, "test1");
16       this.xrTableCell5.DataBindings.Add("Text", DataSource, "test1");
17   }
1 填充数据代码如下:
01 private void simpleButton1_Click(object sender, System.EventArgs e)
02 {
03  
04     XtraReport1  xrpt1=new XtraReport1(GetTempDataSet());
05     xrpt1.ShowPreviewDialog();
06 }
07 private DataSet GetTempDataSet()
08 {
09     DataSet ds=new DataSet();
10     DataTable dt=new DataTable("tempTable");
11     dt.Columns.Add("test1",Type.GetType("System.String"));
12     dt.Columns.Add("test",Type.GetType("System.String"));
13     dt.Columns.Add("test3",Type.GetType("System.String"));
14     dt.Columns.Add("test4",Type.GetType("System.String"));
15     dt.Columns.Add("test5",Type.GetType("System.String"));
16     dt.Columns.Add("test6",Type.GetType("System.String"));
17     dt.Columns.Add("test7",Type.GetType("System.String"));
18     DataRow tempRow;              
19     for (int i=0;i<7;i++)//i:Row
20     {
21         tempRow=dt.NewRow();
22         tempRow[0]=i.ToString();
23         tempRow[1]=i.ToString();
24         tempRow[2]=i.ToString();
25         tempRow[3]=i.ToString();
26         tempRow[4]=i.ToString();
27         tempRow[5]=i.ToString();
28         tempRow[6]=i.ToString();
29         dt.Rows.Add(tempRow);
30     }
31  
32     ds.Tables.Add(dt);
33     return ds;
34 }
1 其中关于主从表的话,因为传进去的DaTaSet所以我们可以再外面把相应的关系指定好后加到DaTaSet。
1 下面给出主从表的代码:
1 DataColumn parentColumns;
2 DataColumn childColumns;
3 parentColumns = ds.Tables["Suppliers"].Columns["SupplierID"];
4 childColumns = ds.Tables["Products"].Columns["SupplierID"];
5 DataRelation dsdr1 = new DataRelation("fk_1", parentColumns, childColumns);
6 ds.Relations.Add(dsdr1);
7  
8 DataRelation dsdr2 = new DataRelation("fk_2", ds.Tables["Products"].Columns["ProductID"], ds.Tables["OrderDetails"].Columns["ProductID"]);
9 ds.Relations.Add(dsdr2);

而模板中绑定数据的话跟上面单表是的大同小异,但是里面的绑定要记得引用的是你绑定关系的外键,也就是,如下代码:

01 public XtraReport1(DataSet ds)
02 {
03     InitializeComponent();
04     SetDataBing(ds);
05 }
06 private void SetDataBing(DataSet ds)
07 {
08     
09     DataMember = "Suppliers";
10     DataSource = ds;
11  
12  
13     this.cellCompanyName.DataBindings.Add("Text", DataSource, "Suppliers.CompanyName");
14     this.sContadName.DataBindings.Add("Text", DataSource, "Suppliers.ContadName");
15     this.sCountry.DataBindings.Add("Text", DataSource, "Suppliers.Country");
16     this.sContactTitle.DataBindings.Add("Text", DataSource, "Suppliers.ContactTitle");
17     this.sRegion.DataBindings.Add("Text", DataSource, "Suppliers.Region");
18     this.sPhone.DataBindings.Add("Text", DataSource, "Suppliers.Phone");
19     this.sCity.DataBindings.Add("Text", DataSource, "Suppliers.City");
20     this.sFax.DataBindings.Add("Text", DataSource, "Suppliers.Fax");
21     this.sPostalCode.DataBindings.Add("Text", DataSource, "Suppliers.PostalCode");
22     this.sHomePage.DataBindings.Add("Text", DataSource, "Suppliers.HomePage");
23     this.sAddress.DataBindings.Add("Text", DataSource, "Suppliers.Address");
24     this.sCompanyName.DataBindings.Add("Text", DataSource, "Suppliers.CompanyName");
25  
26     DetailReport.DataMember = "fk_1";
27     DetailReport.DataSource = DataSource;
28  
29     this.pProductName.DataBindings.Add("Text", DataSource, "fk_1.ProductName");
30     this.pProductID.DataBindings.Add("Text", DataSource, "fk_1.ProductID");
31     this.pCategory.DataBindings.Add("Text", DataSource, "fk_1.CategoryID");
32     this.pUnit.DataBindings.Add("Text", DataSource, "fk_1.QuantityPerUnit");
33     this.pUnitPrice.DataBindings.Add("Text", DataSource, "fk_1.UnitPrice");
34     this.pDiscontinued.DataBindings.Add("Text", DataSource, "fk_1.Discontinued");
35  
36     DetailReport1.DataMember = "fk_1.fk_2";
37     DetailReport1.DataSource = DataSource;
38  
39     this.oOrderID.DataBindings.Add("Text", DataSource, "fk_1.fk_2.OrderID");
40     this.oQuantity.DataBindings.Add("Text", DataSource, "fk_1.fk_2.Quantity");
41     this.oDiscount.DataBindings.Add("Text", DataSource, "fk_1.fk_2.Discount");
42  
43     this.oUnitPrice.DataBindings.Add("Text", DataSource, "fk_1.fk_2.UnitPrice");
44  
45       
46 }
1 this.pProductName.DataBindings.Add("Text", DataSource, "fk_1.ProductName")以这句来说明,"fk_1.ProductName"
1 这个就是子表的数据字段,这部是主从表动态绑定的关键,这样数据就会随主表数据变化而变化。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Developer Express 之 XtraReport如何动态绑定数据
VB.NET访问ACCESS数据库的增加,修改,删除等部分过程
VB.net数据库编程(01):简单的入门实例
ASP.NET2.0通过代码用数据适配器对数据库添加、删除、修改、查询时的几个问题
拷贝DBGrid当前行
delphi增删改查
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服