绿盟财报:Developer Express 之 XtraReport如何动态绑定数据 - Cook...
来源:百度文库 编辑:中财网 时间:2024/04/29 11:50:55
Developer Express 之 XtraReport如何动态绑定数据
XtraReport报表编辑器里的保存,是可以保存为一个文件的,所以它应该提供了一个从文件加载的方法,这时我们可以发现XtraReport里有一个LoadLayout的方法,可以加载报表文件,它的重载方法是可以从IO.Stream里加载报表文件,也就是说,我们可以进一步的把这个报表模板以二进制的方式保存在数据库里。需要的时候,从数据库调用即可。
我们在设计XtraReport的模板的时候,重写它的析构方法,一个有传入数据源的,一个没有。代码如下:
view sourceprint?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
}
view sourceprint? 1
填充数据代码如下:
view sourceprint? 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
}
view sourceprint? 1
其中关于主从表的话,因为传进去的DaTaSet所以我们可以再外面把相应的关系指定好后加到DaTaSet。
view sourceprint? 1
下面给出主从表的代码:
view sourceprint? 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);
而模板中绑定数据的话跟上面单表是的大同小异,但是里面的绑定要记得引用的是你绑定关系的外键,也就是,如下代码:
view sourceprint?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
}
view sourceprint? 1
this
.pProductName.DataBindings.Add(
"Text"
, DataSource,
"fk_1.ProductName"
)以这句来说明,
"fk_1.ProductName"
view sourceprint? 1
这个就是子表的数据字段,这部是主从表动态绑定的关键,这样数据就会随主表数据变化而变化。
关于vb.net2003和Developer Express
Visual Web Developer 2005 Express Edition
用visual web developer 2005 express edition beta软件适合对asp.net进行教学吗?
Microsoft Visual Web Developer 2005 Express Edition现在有中文版本的吗?
Visual Web Developer
gx developer 下载
求Office XP Developer
Windows Mobile Developer Samples
谁知道developer是谁啊
PLSQL DEVELOPER找不到数据库
求《game developer》电子书下载
plsql developer注册问题!急!
Borland.Developer.Studio.2006怎么安装啊?????
Borland Developer Studio 2006不支持.NET 2.0
哪里能下载 Microsoft Office 2000 DEVELOPER
关于Borland Developer Studio 2006的问题
borland developer studio 2006 注册序列号
哪里有Windows InstallShield Developer下载
哪里有Windows InstallShield Developer下载
Microsoft Visual Web Developer 2005 速成版
请问哪里可以下载到oracle developer?
Borland.Developer.Studio.2006.Architect安装
Visual Web Developer与DNN的区别
oracle developer 2000/forms 4.5 问题