Devexpress Xtrareport 并排报表

Posted WhiteSpace

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Devexpress Xtrareport 并排报表相关的知识,希望对你有一定的参考价值。

什么是并排报表呢?

  

按照我个人理解:并排报表是把两张或者两张以上的报表,放在一个报表页面。

注:为了方便,本示例使用同一个数据源,但是您可以使用相同的方法,而在一个报表文档中显示两个完全不同的 (使用不同数据源的) 报表。

依照惯例,我们先来看看我们最后实现的效果,如图:

  

 

第一步:窗体布局。

新建一个WinForm窗体,,拉入第三方控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,无非就是设置空间Dock属性,还有字体Text属性等,简单布局我就不多阐述了。可以参考系列第一篇。

 

第二步:创建两个个Devexpress XtraReport报表文件。一个是明细报表DetailSideBySideRpt(用于绑定到最后显示的并排报表MasterSideBySideRpt),一个是最后显示的并排报表MasterSideBySideRpt  如图:

   

  然后新建一个MasterSideBySideRpt,如图:

    

 

那如何把我们新建的DetailSideBySideRpt报表,并排显示到MasterSideBySideRpt呢?

 

方法一:添加控件XrSubreport 如图:

  

 

也可以手动添加代码

this.xrSubreport1.ReportSource = new 创建并排报表.DetailSideBySideRpt();

this.xrSubreport2.ReportSource = new 创建并排报表.DetailSideBySideRpt();//这里我并排的两张报表都使用了同一个DetailSideBySideRpt,可以使用不同的

Form代码

  

 1       /// <summary>
 2         /// 获取数据集
 3         /// </summary>
 4         /// <returns>返回数据集</returns>
 5         private DataSet Getdataset()
 6         {
 7             DataSet ds = new DataSet();
 8             string cstr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString.ToString();
 9             SqlConnection mycon = new SqlConnection(cstr);
10             try
11             {
12                 mycon.Open();
13                 SqlCommand mycom = new SqlCommand("select * from jiaochainfo", mycon);
14                 SqlDataAdapter dpt = new SqlDataAdapter(mycom);
15                 dpt.Fill(ds, "jiaochainfo");
16                 mycon.Close();
17             }
18             catch (Exception ex)
19             {
20 
21                 MessageBox.Show(ex.Message);
22             }
23 
24             return ds;
25         }
26         //点击事件
27         private void simpleButton1_Click(object sender, EventArgs e)
28         {
29             DataSet ds = Getdataset();
30             XtraReport1 report = new XtraReport1(ds);
31             report.Landscape = true;
32             MianXtrareport rpt = new MianXtrareport(ds);
33             rpt.Landscape = true;
34             documentViewer1.DocumentSource = rpt;
35             //显示主报表的文档
36             rpt.CreateDocument();
37         }
38 
39     }

详细报表代码

  

 1       
 2         //构造数据参数绑定字段
 3         public XtraReport1(DataSet ds)
 4         {
 5             InitializeComponent();
 6             this.DataSource = ds;
 7             this.DataMember = "jiaochainfo";
 8             this.xrLabel1.DataBindings.Add("Text",ds,"name");
 9             this.xrLabel2.DataBindings.Add("Text",ds,"sex");
10             this.xrLabel3.DataBindings.Add("Text",ds,"older");
11         }

主报表代码

  

 1        //主报表构造函数
 2         public MianXtrareport( DataSet ds)
 3         {
 4             InitializeComponent();
 5             //关键的一步,xrsubreport 控件的报表源等于 xtrareport
 6             this.xrSubreport1.ReportSource = new 并排报表.XtraReport1(ds);
 7             this.xrSubreport2.ReportSource = new 并排报表.XtraReport1(ds);
 8 
 9         }
10 
11         //在显示之前的事件,利用FilterString属性过滤数据源
12 
13         private void xrSubreport1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
14         {
15             //jtype为数据库库的字段
16             ((XRSubreport)sender).ReportSource.FilterString = "jtype ==\'体育明星\'";
17         }
18         //利用FilterString属性过滤数据源
19 
20         private void xrSubreport2_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
21         {
22             ((XRSubreport)sender).ReportSource.FilterString = "jtype ==\'影视明星\'";
23         }

 

以上是关于Devexpress Xtrareport 并排报表的主要内容,如果未能解决你的问题,请参考以下文章

DevExpress XtraReport GDI+ 一般错误

DevExpress XtraReport 报表设计 添加DetailReport

请教devexpress xtrareport问题

如何在DevExpress XtraReport报表中实现分组行号从新计算

我用DevExpress 2010.1的ReportViewer做数据显示,但是数据显示不全,是否XtraReport有啥需要设置?

如何动态传递参数到DevExpress XtraReports