DevExpress的XtraReports使用心得(幫助文檔)
Posted on 2006-09-22 10:20 云自無心水自閑 閱讀(14543) 評論(1) 編輯 收藏 所屬分類: .Net在XtraReport中, 每一個(gè)報(bào)表都是XtraReport或者其子類. 打個(gè)比方說, XtraReport就好象Windows Forms. 同樣的道理, 所有的form都Form類的子類.

? XtraReport中的報(bào)表類可以與數(shù)據(jù)綁定也可以不綁定. 如果要創(chuàng)建一個(gè)綁定數(shù)據(jù)的報(bào)表, 需要查看<數(shù)據(jù)綁定>和<綁定數(shù)據(jù)控件>這兩個(gè)主題的幫助.
? 在創(chuàng)建一個(gè)報(bào)表時(shí), 可以從已有的報(bào)表中加載樣式和布局, 樣式中包含了報(bào)表控件外觀的屬性值, 而布局包含了報(bào)表的結(jié)構(gòu)信息. 另外, 還可以從其他報(bào)表系統(tǒng)中導(dǎo)入報(bào)表, 比如: Access, 水晶報(bào)表等等, 如果要詳細(xì)了解XtraReport的導(dǎo)入功能, 請參閱<Importing Overview>主題.
? 報(bào)表類(XtraReport的子類)創(chuàng)建后, 就可以生成其實(shí)例. 需要注意的是, XtraReport對象可以在Windows Forms中使用也可以在Asp.net中使用. 在Windows應(yīng)用中使用報(bào)表, 通常需要維護(hù)報(bào)表的<Printing System>, 這個(gè)對象提供了報(bào)表的輸出功能.
? 創(chuàng)建報(bào)表有兩種方式, 一種是簡單地添加一個(gè)"模板"報(bào)表, 一種是通過報(bào)表向?qū)韯?chuàng)建報(bào)表. 在報(bào)表添加到項(xiàng)目后, 報(bào)表設(shè)計(jì)器提供了大量的設(shè)計(jì)時(shí)元素來加快簡化報(bào)表的創(chuàng)建. XtraReport工具箱包含了所有的控件, Report Navigator可以瀏覽整個(gè)報(bào)表, Feild List可以拖放數(shù)據(jù)字段來創(chuàng)建與數(shù)據(jù)綁定的報(bào)表控件.
?? XtraReport的所有報(bào)表都是由<Report Band>和<Report Control>組成的.
? 然后開始創(chuàng)建報(bào)表的結(jié)構(gòu), 首先在XtraReportBase.Bands屬性中添加Bands, 然后在相應(yīng)的Bands的XRControl.Controls屬性中添加控件. 報(bào)表帶和控件的添加方法一般是這樣的
最后創(chuàng)建好的報(bào)表可以輸出給用戶看了
附: XtraReport的類結(jié)構(gòu)層次圖:


? XtraReport中的報(bào)表類可以與數(shù)據(jù)綁定也可以不綁定. 如果要創(chuàng)建一個(gè)綁定數(shù)據(jù)的報(bào)表, 需要查看<數(shù)據(jù)綁定>和<綁定數(shù)據(jù)控件>這兩個(gè)主題的幫助.
? 在創(chuàng)建一個(gè)報(bào)表時(shí), 可以從已有的報(bào)表中加載樣式和布局, 樣式中包含了報(bào)表控件外觀的屬性值, 而布局包含了報(bào)表的結(jié)構(gòu)信息. 另外, 還可以從其他報(bào)表系統(tǒng)中導(dǎo)入報(bào)表, 比如: Access, 水晶報(bào)表等等, 如果要詳細(xì)了解XtraReport的導(dǎo)入功能, 請參閱<Importing Overview>主題.
? 報(bào)表類(XtraReport的子類)創(chuàng)建后, 就可以生成其實(shí)例. 需要注意的是, XtraReport對象可以在Windows Forms中使用也可以在Asp.net中使用. 在Windows應(yīng)用中使用報(bào)表, 通常需要維護(hù)報(bào)表的<Printing System>, 這個(gè)對象提供了報(bào)表的輸出功能.
? 創(chuàng)建報(bào)表有兩種方式, 一種是簡單地添加一個(gè)"模板"報(bào)表, 一種是通過報(bào)表向?qū)韯?chuàng)建報(bào)表. 在報(bào)表添加到項(xiàng)目后, 報(bào)表設(shè)計(jì)器提供了大量的設(shè)計(jì)時(shí)元素來加快簡化報(bào)表的創(chuàng)建. XtraReport工具箱包含了所有的控件, Report Navigator可以瀏覽整個(gè)報(bào)表, Feild List可以拖放數(shù)據(jù)字段來創(chuàng)建與數(shù)據(jù)綁定的報(bào)表控件.
?? XtraReport的所有報(bào)表都是由<Report Band>和<Report Control>組成的.
public?class?XtraReport1?:?DevExpress.XtraReports.UI.XtraReport
{
???private?DevExpress.XtraReports.UI.DetailBand?Detail;
???private?DevExpress.XtraReports.UI.PageHeaderBand?PageHeader;
???private?DevExpress.XtraReports.UI.PageFooterBand?PageFooter;
???private?DevExpress.XtraReports.UI.XRLabel?xrLabel1;
???private?DevExpress.XtraReports.UI.XRLabel?xrLabel2;
???private?System.ComponentModel.Container?components?=?null;
???public?XtraReport1()
???{
??????InitializeComponent();
???}
???protected?override?void?Dispose(?bool?disposing?)
???{
??????if(?disposing?)
??????{
?????????if(components?!=?null)
?????????{
????????????components.Dispose();
?????????}
??????}
??????base.Dispose(?disposing?);
???}
??
???//?
.
? {
???private?DevExpress.XtraReports.UI.DetailBand?Detail;
???private?DevExpress.XtraReports.UI.PageHeaderBand?PageHeader;
???private?DevExpress.XtraReports.UI.PageFooterBand?PageFooter;
???private?DevExpress.XtraReports.UI.XRLabel?xrLabel1;
???private?DevExpress.XtraReports.UI.XRLabel?xrLabel2;
???private?System.ComponentModel.Container?components?=?null;
???public?XtraReport1()
???{
??????InitializeComponent();
???}
???protected?override?void?Dispose(?bool?disposing?)
???{
??????if(?disposing?)
??????{
?????????if(components?!=?null)
?????????{
????????????components.Dispose();
?????????}
??????}
??????base.Dispose(?disposing?);
???}
??
???//?

? 然后開始創(chuàng)建報(bào)表的結(jié)構(gòu), 首先在XtraReportBase.Bands屬性中添加Bands, 然后在相應(yīng)的Bands的XRControl.Controls屬性中添加控件. 報(bào)表帶和控件的添加方法一般是這樣的
//?Add?Detail,?PageHeader?and?PageFooter?bands?to?the?report's?collection?of?bands.
this.Bands.AddRange(new?DevExpress.XtraReports.UI.Band[]?{this.Detail,?this.PageHeader,?this.PageFooter});
//?Add?two?XRLabel?controls?to?the?Detail?band.
this.Detail.Controls.AddRange(new?DevExpress.XtraReports.UI.XRControl[]?{this.xrLabel1,?this.xrLabel2});
this.Bands.AddRange(new?DevExpress.XtraReports.UI.Band[]?{this.Detail,?this.PageHeader,?this.PageFooter});
//?Add?two?XRLabel?controls?to?the?Detail?band.
this.Detail.Controls.AddRange(new?DevExpress.XtraReports.UI.XRControl[]?{this.xrLabel1,?this.xrLabel2});
最后創(chuàng)建好的報(bào)表可以輸出給用戶看了
//?Create?a?report.
XtraReport1?report?=?new?XtraReport1();
//?Create?the?report's?document?so?it?can?then?be?previewed,?printed?or?exported.
//?NOTE:?Usually?you?don't?need?to?call?this?method?as?it's?automatically?called?by?all?of?the?following?methods.
//?See?the?corresponding?member?topic?to?find?out?when?it?needs?to?be?called.
report.CreateDocument();
//?Show?the?form?with?the?report's?print?preview.
report.ShowPreview();
//?Print?the?report?in?a?dialog?and?"silent"?mode.
report.PrintDialog();
report.Print();
//?Open?the?report?in?the?End-User?designer
report.RunDesigner();
//?Export?the?report.
report.CreateHtmlDocument("report.html");
report.CreatePdfDocument("report.pdf");
report.CreateImage("report.jpg",?System.Drawing.Imaging.ImageFormat.Gif);
XtraReport1?report?=?new?XtraReport1();
//?Create?the?report's?document?so?it?can?then?be?previewed,?printed?or?exported.
//?NOTE:?Usually?you?don't?need?to?call?this?method?as?it's?automatically?called?by?all?of?the?following?methods.
//?See?the?corresponding?member?topic?to?find?out?when?it?needs?to?be?called.
report.CreateDocument();
//?Show?the?form?with?the?report's?print?preview.
report.ShowPreview();
//?Print?the?report?in?a?dialog?and?"silent"?mode.
report.PrintDialog();
report.Print();
//?Open?the?report?in?the?End-User?designer
report.RunDesigner();
//?Export?the?report.
report.CreateHtmlDocument("report.html");
report.CreatePdfDocument("report.pdf");
report.CreateImage("report.jpg",?System.Drawing.Imaging.ImageFormat.Gif);
附: XtraReport的類結(jié)構(gòu)層次圖:
