xtrareport 的使用方法

更新时间:2023-09-29 12:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Xtrareport

1, 此报表在设置时,paperkind中找不到自定义的纸张,所以我就在事件beforeprint中,

this.Margins = new System.Drawing.Printing.Margins(10, 10, 10, 10); this.PaperKind = System.Drawing.Printing.PaperKind.Custom; this.PageWidth = 827; this.PageHeight = 584; this.PaperName = \2.加载已有模板

xrpt1.LoadLayout(@\);

Developer Express 之 XtraReport报表预览控件PrintControl设置 using System; 02

using System.Collections.Generic;

03 using System.ComponentModel; 04 using System.Data; 05 using System.Drawing; 06 using System.Text;

07 using System.Windows.Forms; 08 using DevExpress.XtraEditors; 09 using DevExpress.XtraReports.UI; 10 using DevExpress.XtraPrinting.Preview; 11 using DevExpress.XtraPrinting; 12 using DevExpress.XtraPrinting.Control; 13

14 namespace WFAXtraReport 15 {

16 public partial class Form1 : Form 17 {

18 public Form1 () 19 {

20 InitializeComponent(); 21 } 22

23 private void Form1 _Load(object sender, EventArgs e) 24 { 25

26 XtraReport fXtraReport = new XtraReport(); 27 //fXtraReport.LoadLayout(@\28

29 PrintControl printControl1 = new PrintControl(); printControl1.PrintingSystem = 30

fXtraReport.PrintingSystem; 31 32

PrintBarManager printBarManager 33

= new PrintBarManager(); 34 printBarManager.Form = printControl1; 35 printBarManager.Initialize(printControl1); 36 printBarManager.MainMenu.Visible = false; 37 printBarManager.AllowCustomization = false; 38

39 //操作要显示什么按钮

4 printControl1.PrintingSystem.SetCommandVisibility(new P0 rintingSystemCommand[]{

41 PrintingSystemCommand.Open, 42 PrintingSystemCommand.Save,

43 PrintingSystemCommand.ClosePreview, 44 PrintingSystemCommand.Customize, 45 PrintingSystemCommand.SendCsv, 46 PrintingSystemCommand.SendFile, 47 PrintingSystemCommand.SendGraphic, 48 PrintingSystemCommand.SendMht, 49 PrintingSystemCommand.SendPdf, 50 PrintingSystemCommand.SendRtf, 51 PrintingSystemCommand.SendTxt, 52 PrintingSystemCommand.SendXls 53 }, CommandVisibility.None); 54

55 fXtraReport.CreateDocument();

56

57 Controls.Add(printControl1);

58 printControl1.Dock = DockStyle.Fill; 59 } 60 } 61 }

关于XtraReport的功能还有很多,细节上的处理还有很多,留待以后再整理,先整理这几个常用的。

posted @ 2010-12-06 21:10 CookBlack 阅读(423) | 评论(0) | 编辑

Developer Express 之 XtraReport如何显示设计窗体 XtraReport的设计器,其实用XRDesignFormEx就可以。

01 using System;

02 using System.Collections.Generic; 03 using System.ComponentModel; 04 using System.Data; 05 using System.Drawing; 06 using System.Linq; 07 using System.Text;

08 using System.Windows.Forms; 09 using DevExpress.XtraReports.UI;

10 using DevExpress.XtraReports.UserDesigner; 11 using System.Drawing.Design; 12 using System.ComponentModel.Design; 13

14 namespace WFAXtraReport 15 {

16 public partial class Form1 : Form 17 {

18 XtraReport r ;//这个可以是加载之前设计好的模板 19 public Form1() 20 {

21 InitializeComponent(); 22 } 23

24 private void designForm_FormClosing(object sender,

FormClosingEventArgs e) 25 {

26 //在此处处理关闭设计器时的操作,主要用来自定义保存数据 27 //r.SaveLayout(@\28 } 29

private void designForm_ReportStateChanged(object sender, 30

ReportStateEventArgs e) 31 {

32 //只要报表发生改变就立即将状态设置为保存 33 //避免系统默认保存对话框的出现

34 if (e.ReportState == ReportState.Changed) 35 {

((XRDesignFormEx)sender).DesignPanel.ReportState = 36

ReportState.Saved; 37 } 38 } 39

40 private void Form1_Load(object sender, EventArgs e) 41 {

42 r = new XtraReport(); 43 //r.LoadLayout(@\

44 XRDesignFormEx designForm = new XRDesignFormEx(); 45

46 //隐藏按钮

4 designForm.DesignPanel.SetCommandVisibility(new Report7 Command[]{

48 ReportCommand.NewReport, 49 ReportCommand.SaveFileAs, 50 ReportCommand.NewReportWizard, 51 ReportCommand.OpenFile 52 }, CommandVisibility.None); 53 54

55 //更改状态

56 designForm.ReportStateChanged

+= new ReportStateEventHandler(designForm_ReportStateChanged); 57

designForm.FormClosing 58

+= new FormClosingEventHandler(designForm_FormClosing); 59

60 // 加载报表.

61 designForm.OpenReport(r); 62

63 // 打开设计器

64 designForm.ShowDialog(); 65

66 designForm.Dispose(); 67 } 68 } 6} 9

体的时候要控制什么,你可以重载里面的数据。比如设计窗体显示有点慢,我0

们在开始的时候加载个等待窗体,显示出来后关闭这个

1 href=\http://www.cnblogs.com/rock_chen/archive/2008/7/2.html\http://www.cnblogs.com/rock_chen/archive/2008/7/2.html)关于模板的设计和数据绑定可以参看之前发表的 1 Developer Express 之 XtraReport如何数据动态绑定。

posted @ 2010-12-06 20:56 CookBlack 阅读(296) | 评论(0) | 编辑

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;

this.xrTableCell4.DataBindings.Add(\15

DataSource, \ this.xrTableCell5.DataBindings.Add(\16

DataSource, \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(\

11 dt.Columns.Add(\12 dt.Columns.Add(\13 dt.Columns.Add(\14 dt.Columns.Add(\15 dt.Columns.Add(\16 dt.Columns.Add(\17 dt.Columns.Add(\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[\4 childColumns = ds.Tables[\DataRelation dsdr1 = new DataRelation(\5

childColumns);

6 ds.Relations.Add(dsdr1); 7

DataRelation dsdr2 = new DataRelation(\8 ds.Tables[\

ds.Tables[\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 = \10 DataSource = ds; 11 12

this.cellCompanyName.DataBindings.Add(\13

DataSource, \ this.sContadName.DataBindings.Add(\14

DataSource, \ this.sCountry.DataBindings.Add(\15

DataSource, \ this.sContactTitle.DataBindings.Add(\16

DataSource, \ this.sRegion.DataBindings.Add(\17

DataSource, \ this.sPhone.DataBindings.Add(\18

DataSource, \ this.sCity.DataBindings.Add(\19

DataSource, \ this.sFax.DataBindings.Add(\20

DataSource, \ this.sPostalCode.DataBindings.Add(\21

DataSource, \ this.sHomePage.DataBindings.Add(\22

DataSource, \ this.sAddress.DataBindings.Add(\23

DataSource, \ this.sCompanyName.DataBindings.Add(\24

DataSource, \25

26 DetailReport.DataMember = \27 DetailReport.DataSource = DataSource; 28

this.pProductName.DataBindings.Add(\29

DataSource, \30 this.pProductID.DataBindings.Add(\

DataSource, \

this.pCategory.DataBindings.Add(\31

DataSource, \ this.pUnit.DataBindings.Add(\32

DataSource, \ this.pUnitPrice.DataBindings.Add(\33

DataSource, \ this.pDiscontinued.DataBindings.Add(\34

DataSource, \35

36 DetailReport1.DataMember = \37 DetailReport1.DataSource = DataSource; 38

this.oOrderID.DataBindings.Add(\39

DataSource, \ this.oQuantity.DataBindings.Add(\40

DataSource, \ this.oDiscount.DataBindings.Add(\41

DataSource, \42

this.oUnitPrice.DataBindings.Add(\43

DataSource, \44 45 46 } 1

this.pProductName.DataBindings.Add(\

DataSource, \以这句来说明,\

这个就是子表的数据字段,这部是主从表动态绑定的关键,这样数据就会随主1

表数据变化而变化。

posted @ 2010-12-06 20:47 CookBlack 阅读(518) | 评论(2) | 编辑

C#获取当前路径的方法

转:http://cosky.blogbus.com/logs/52749759.html //获取包含清单的已加载文件的路径或 UNC 位置。

public static string sApplicationPath = Assembly.GetExecutingAssembly ( ).Location;

//result: X:\\xxx\\xxx\\xxx.dll (.dll文件所在的目录+.dll文件名) //获取当前进程的完整路径,包含文件名(进程名)。 string str = this.GetType ( ).Assembly.Location;

//result: X:\\xxx\\xxx\\xxx.exe (.exe文件所在的目录+.exe文件名)

//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。

string str = System.Diagnostics.Process.GetCurrentProcess ( ).MainModule.FileName;

//result: X:\\xxx\\xxx\\xxx.exe (.exe文件所在的目录+.exe文件名) //获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。 string str = System.Environment.CurrentDirectory; //result: X:\\xxx\\xxx (.exe文件所在的目录)

//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。 string str = System.AppDomain.CurrentDomain.BaseDirectory; //result: X:\\xxx\\xxx\\ (.exe文件所在的目录+\//获取和设置包含该应用程序的目录的名称。 string str =

System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //result: X:\\xxx\\xxx\\ (.exe文件所在的目录+\

//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。 string str = System.Windows.Forms.Application.StartupPath; //result: X:\\xxx\\xxx (.exe文件所在的目录)

//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。 string str = System.Windows.Forms.Application.ExecutablePath; //result: X:\\xxx\\xxx\\xxx.exe (.exe文件所在的目录+.exe文件名) //获取应用程序的当前工作目录(不可靠)。

string str = System.IO.Directory.GetCurrentDirectory ( ); //result: X:\\xxx\\xxx (.exe文件所在的目录) 在系统服务中最好用这个方式去取路径

string stmp = Assembly.GetExecutingAssembly ( ).Location; stmp = stmp.Substring ( 0 , stmp.LastIndexOf ( '\\\\' ) );//删除文件名 if ( pathType == 1 )

return stmp + @\else if ( pathType == 2 )

return stmp + @\else

return stmp + @%using System.IO;

string path = \

string fileName = Path.GetFileName(path); //文件名 string ext = Path.GetExtension(path); //扩展名 1、判定一个给定的路径是否有效,合法

通过Path.GetInvalidPathChars或Path.GetInvalidFileNameChars方法获得非法的路径/文件名字符,可以根据它来判断路径中是否包含非法字符; 2、如何确定一个路径字符串是表示目录还是文件

使用Directory.Exists或File.Exist方法,如果前者为真,则路径表示目录;如果后者为真,则路径表示文件

上面的方法有个缺点就是不能处理那些不存在的文件或目录。这时可以考虑使用

Path.GetFileName方法获得其包含的文件名,如果一个路径不为空,而文件名为空那么它表示目录,否则表示文件; 3、获得路径的某个特定部分

Path.GetDirectoryName :返回指定路径字符串的目录信息。 Path.GetExtension :返回指定的路径字符串的扩展名。 Path.GetFileName :返回指定路径字符串的文件名和扩展名。

Path.GetFileNameWithoutExtension :返回不具有扩展名的路径字符串的文件名。 Path.GetPathRoot :获取指定路径的根目录信息。 4、准确地合并两个路径而不用去担心那个烦人的“\\”字符 使用Path.Combine方法,它会帮你处理烦人的“\\”。 5、获得系统目录的路径

Environment.SystemDirectory属性:获取系统目录的完全限定路径 Environment.GetFolderPath方法:该方法接受的参数类型为

Environment.SpecialFolder枚举,通过这个方法可以获得大量系统 文件夹的路径,如我的电脑,桌面,系统目录等

Path.GetTempPath方法:返回当前系统的临时文件夹的路径 6、判断一个路径是绝对路径还是相对路径 使用Path.IsPathRooted方法 7、读取或设置当前目录

使用Directory类的GetCurrentDirectory和SetCurrentDirectory方法 8、使用相对路径

设置当前目录后(见上个问题),就可以使用相对路径了。对于一个相对路径,我们可以使用Path.GetFullPath方法获得它的完 全限定路径(绝对路径)。

注意:如果打算使用相对路径,建议你将工作目录设置为各个交互文件的共同起点,否则可能会引入一些不易发现的安全隐患,被恶意用户利用来访问系统文件。 9、文件夹浏览对话框(FolderBrowserDialog类)

主要属性: Description:树视图控件上显示的说明文本,如上图中的“选择目录--练习”;RootFolder:获取或设置从其开始浏览的根文件夹,如上图中设置的我的电脑(默认为桌面);SelectedPath:获取或设置用户选定的路径,如果设置了该属性,打开对话框时会定位到指定路径,默认为根文件夹,关闭对话框时根据该属性获取用户用户选定的路径; ShowNewFolderButton:获取或设置是否显示新建对话框按钮;

主要方法: ShowDialog:打开该对话框,返回值为DialogResult类型值,如果为DialogResult.OK,则可以由SelectedPath属性获取用户选定的路径

本文来源:https://www.bwwdw.com/article/9shd.html

Top