什么是并排报表呢?

  

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

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

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

  

第一步:窗体布局。

新建一个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代码

  

       /// <summary>
/// 获取数据集
/// </summary>
/// <returns>返回数据集</returns>
private DataSet Getdataset()
{
DataSet ds = new DataSet();
string cstr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString.ToString();
SqlConnection mycon = new SqlConnection(cstr);
try
{
mycon.Open();
SqlCommand mycom = new SqlCommand("select * from jiaochainfo", mycon);
SqlDataAdapter dpt = new SqlDataAdapter(mycom);
dpt.Fill(ds, "jiaochainfo");
mycon.Close();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message);
} return ds;
}
//点击事件
private void simpleButton1_Click(object sender, EventArgs e)
{
DataSet ds = Getdataset();
XtraReport1 report = new XtraReport1(ds);
report.Landscape = true;
MianXtrareport rpt = new MianXtrareport(ds);
rpt.Landscape = true;
documentViewer1.DocumentSource = rpt;
//显示主报表的文档
rpt.CreateDocument();
} }

详细报表代码

  

         //构造数据参数绑定字段
public XtraReport1(DataSet ds)
{
InitializeComponent();
this.DataSource = ds;
this.DataMember = "jiaochainfo";
this.xrLabel1.DataBindings.Add("Text",ds,"name");
this.xrLabel2.DataBindings.Add("Text",ds,"sex");
this.xrLabel3.DataBindings.Add("Text",ds,"older");
}

主报表代码

  

        //主报表构造函数
public MianXtrareport( DataSet ds)
{
InitializeComponent();
//关键的一步,xrsubreport 控件的报表源等于 xtrareport
this.xrSubreport1.ReportSource = new 并排报表.XtraReport1(ds);
this.xrSubreport2.ReportSource = new 并排报表.XtraReport1(ds); } //在显示之前的事件,利用FilterString属性过滤数据源 private void xrSubreport1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
//jtype为数据库库的字段
((XRSubreport)sender).ReportSource.FilterString = "jtype =='体育明星'";
}
//利用FilterString属性过滤数据源 private void xrSubreport2_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
((XRSubreport)sender).ReportSource.FilterString = "jtype =='影视明星'";
}

Devexpress Xtrareport 并排报表的更多相关文章

  1. Devexpress Xtrareport 打印报表

    需要引用 Using Devexpress.Xtrareport.UI: Using Devexpress.XtraPrinting.Localiztion 实例化报表,xtrareport my=n ...

  2. [原创]Devexpress XtraReports 系列 6 创建并排报表

    昨天我们已经介绍了如何创建交叉报表,详见:[原创]Devexpress XtraReports 系列 5 创建交叉报表 今天我们继续我们的XtraReports系列.Demo和数据库文件最后会附上. ...

  3. DevExpress.XtraReports.UI.XtraReport 动态报表

    原文:DevExpress.XtraReports.UI.XtraReport 动态报表 using System;using System.Collections.Generic;using Sys ...

  4. DevExpress XtraReport - 动态加载报表布局模板

    XtraReport的报表模板文件是.repx,下面的代码演示动态加载报表布局模板. XtraReport mReport = new XtraReport(); mReport.LoadLayout ...

  5. Devexpress XtraReports 交叉报表

    [原创]Devexpress XtraReports 系列 5 创建交叉报表   昨天我们已经介绍了如何创建多栏报表,详见:[原创]Devexpress XtraReports 系列 4 创建多栏报表 ...

  6. DevExpress XtraReport报表预览时可编辑的功能

    设置控件的EditOptions.Enabled=true即可 注册实现PrintingSystem. EditingFieldChanged事件,可获得当前发生更改的控件的值. 另:XtraRepo ...

  7. Devexpress Xtrareport 创建主从报表

    效果 xtrareport 布局 From 代码 private DataSet Getdata() { DataSet ds = new DataSet(); //config配置字符串 strin ...

  8. C# WinfForm 控件之dev报表 XtraReport (五) 并排报表

    有了前边的基础这个就很简单了,建一个容器报表 在detail,上放两个xrsubReport.再做两个明细报表,分别指定到xrsubreport就可以了

  9. devexpress XtraReport报表 ---主从报表

    private void GetWqpWorkPrinter(List<ReelListMagt> list, string WorkDate, User user) { ReelList ...

随机推荐

  1. ubuntu - 常用问题解决命令

    查看本机网络通畅 - 网络是否可连接(远程链接时,检验防火墙) ping -c 10 localhost 查看本机进程/端口占用情况(看某一进程是否开启) netstat -tln 具体查看某一进程 ...

  2. Quadratic Residues POJ - 1808 二次剩余定理

    \(\color{#0066ff}{题目链接 }\) link \(\color{#0066ff}{ 题解 }\) 结论题 \((\frac{a}{p})=a^{\frac{p-1}{2}}\mod ...

  3. P2900 [USACO08MAR]土地征用Land Acquisition

    \(\color{#0066ff}{ 题目描述 }\) 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选择并购一组土地,并购的价格为这些 ...

  4. 模板【洛谷P3811】 【模板】乘法逆元

    P3811 [模板]乘法逆元 给定n,p求1~n中所有整数在模p意义下的乘法逆元. T两个点的费马小定理求法: code: #include <iostream> #include < ...

  5. 「模拟赛20181025」御风剑术 博弈论+DP简单优化

    题目描述 Yasuo 和Riven对一排\(n\)个假人开始练习.斩杀第\(i\)个假人会得到\(c_i\)个精粹.双方轮流出招,他们在练习中互相学习,所以他们的剑术越来越强.基于对方上一次斩杀的假人 ...

  6. newCachedThreadPool无上限线程池使用

    1. newCachedThreadPool无上限线程池,   动态根据代码添加线程,   如果线程空闲60秒没有被使用,会自动关闭 package ThreadTest; import java.u ...

  7. Java中的两个类:Desktop和SystemTray

    在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如 ...

  8. Java的Protected

    没想到接触Java这么多年,今天竟然才发现一直有一个误解 Proteced只能被同一个包内的或者子类的class访问 那么在另一个包的如下代码有问题吗? Sub sub = new Sub(); su ...

  9. dynamic:动态类型简单用法,写法

    class 动态创建数据 { //动态类型:本质感觉跟object的用法差不多,只是在执行的时候才知道数据类型 public dynamic Dynamic() { //定义一个动态类型,作为返回值 ...

  10. 随性练习:python字典实现文本合并

    主要用到,字典.字符串分割和连接.文件等操作 例如:有以下两个txt文本,要合并成一个 代码: address_book1 = {} address_book2 = {} def read_addre ...