昨天发表了Devexpress XtraReports系列第八篇[原创]Devexpress XtraReports 系列 8 创建Drill-Through报表,今天我们继续。

今天的主题是创建邮件合并报表。

什么是邮件合并报表呢?

回答:数据字段被嵌入到标签控件的文本中,并在预览或导出报表时被替换为相应的数据取值。

邮件合并功能:一般报表,我们不能指定为单个属性指定一个以上的数据绑定,而“邮件合并”则允许把多个数据字段合并到文本中。

注意:字段需要用[]括起来

支持邮件合并的控件有:

  • XRBarCode
  • XRCheckBox
  • XRLabel
  • XRRichText
  • XRTableCell
  • XRZipCode

首先我们来看看最后实现的效果。Demo最后附上。

接下来开始讲解如何一步一步做出这个报表:

第一步

创建如上窗体,拉入控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,简单布局我就不多说了,跟上篇一样的布局 ,详见:http://www.cnblogs.com/lhmlyx2723356/p/3286101.html

第二步

创建一个报表文件。如图:

第三步

我们利用数据库做一张简单的表并输入一些测试值。如图:

第四步

数据库表,布局都做好了,接下来我们就来处理相对应的事件了。输入文本框的值,点击按钮把查询出来的数据源绑定到报表

a,修改报表文件的构造函数,让它在实例化的时候可以接收数据源。

public MailMergeRpt(DataSet ds)
      {
          InitializeComponent();
          this.DataSource = ds;
          this.DataMember = "MailMegerRpt";
      }

//为了让XRRichText控件中承载的XRPictureBox控件显示出数据库中测试数据中的jpg图片,其实这些图片是存放在程序运行目录下,如图:

那如何让图片显示出来呢?

我们应该处理XRPictureBox控件的BeforePrint 事件。

private void xrPictureBox1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
   {
       string path = System.Environment.CurrentDirectory + "\\" + GetCurrentColumnValue("pictureurl");
       xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
       ((XRPictureBox)sender).Image = Image.FromFile(path);
   }

b,获取数据源

private DataSet BindRpt()
      {
          DataSet ds = new DataSet();
          try
          {
              SqlConnection con = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=ReportDeom");
              SqlDataAdapter adapter;
              con.Open();
              SqlCommand cmd = new SqlCommand("SELECT * FROM Dept where dept_name=@name OR @name='' ", con);
              SqlParameter[] paras = new SqlParameter[]{
                  new SqlParameter("@name",txtName.Text.Trim())
              };
              cmd.Parameters.AddRange(paras);
              adapter = new SqlDataAdapter(cmd);
              adapter.Fill(ds, "MailMegerRpt"); ;
              con.Close();
          }
          catch (Exception ex)
          {
              throw ex;
          }
          return ds;
      }

c,单击按钮,绑定数据到报表中

private void btnShowReport_Click(object sender, EventArgs e)
{
     DataSet ds = BindRpt();
     MailMergeRpt Rpt = new MailMergeRpt(ds);
     this.documentViewer1.DocumentSource = Rpt;
     Rpt.CreateDocument();
}

到此,邮件合并报表就完成了。

Demo地址:http://yunpan.cn/QXIpty8CBHdr5  访问密码 56c9

[原创]Devexpress XtraReports 系列 9 创建邮件合并报表的更多相关文章

  1. [原创]Devexpress XtraReports 系列 4 创建多栏报表

    昨天我们完成了 [原创]Devexpress XtraReports 系列 3 创建主从报表 今天我们继续学习新的一种报表模式:多栏报表.(Demo源码,数据库最后附上) 或许很多人会问什么是多栏报表 ...

  2. [原创]Devexpress XtraReports 系列 10 创建标签报表

    今天这篇是Dx Reports 基础初级系列的最后一篇了.以后如果有什么高级的应用,应该另开一个中级使用系列. 昨天发表了Devexpress XtraReports系列第九篇[原创]Devexpre ...

  3. [原创]Devexpress XtraReports 系列 5 创建交叉报表

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

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

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

  5. [原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表

    昨天发表了Devexpress XtraReports系列第六篇[原创]Devexpress XtraReports 系列 6 创建并排报表,今天我们继续. 今天的主题是创建Drill-Down报表. ...

  6. [原创]Devexpress XtraReports 系列 8 创建Drill-Through报表

    哎,今天公司工作忙了一天,一直没有时间写写东西.所以只能昨天晚上加班写咯.苦逼啊...... 昨天发表了Devexpress XtraReports系列第七篇[原创]Devexpress XtraRe ...

  7. [原创]Devexpress XtraReports 系列 3 创建主从报表

    昨天写了系列的第二篇Devexpress XtraReports 系列 2 创建表格报表 . 今天我们来继续系列 3 创建主从报表 首先我们来看看最后实现的效果.Demo最后附上. 开始吧. 第一步, ...

  8. [原创]Devexpress XtraReports 系列 2 创建表格报表

    昨天发表了Devexpress XtraReports系列开篇,今天我们继续. 今天的主题是创建表格报表. 首先我们来看看最后实现的效果.Demo最后附上. 接下来开始讲解如何一步一步做出这个报表: ...

  9. [原创]Devexpress XtraReports 系列 1 创建静态报表

    在各种管理系统中,报表是必不可少的.报表是数据最直观体现的方式之一 以前,屌丝我是微软的忠实粉丝,所以报表工具就是微软自带的RDLC... 不可否认的是RDLC的功能是非常强大的.能够满足绝大多数的要 ...

随机推荐

  1. hdu1054(二分图匹配)

    题意很简单,在一颗树上找最小点覆盖. 将树染成黑白两色,构成一张二分图,然后最大匹配==最小点覆盖即可,所以一次匈牙利就可以求出来了 hdu1054 #include <iostream> ...

  2. bower常用命令

    bower install loadash --save bower uninstall loadash --save bower init bower install loadash#2.2.1 b ...

  3. HDU 5038 Grade

    解题思路:这题最关键的是要读懂题意,If not all the value are the same but the frequencies of them are the same, there ...

  4. KVM虚拟化技术简介

    kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所 ...

  5. 射手网字幕打包下载(73.16G)

    射手网陪着我度过15年了. 我所希望射手网所具有的价值,就是能令更多人跨越国家的樊篱,了解世界上不同的文化. 如果这个网站有帮到人,我就已经很满足了. 但是,需要射手网的时代已经走开了. 因此,今天, ...

  6. 动态加载 移除js file

    动态加载.移除.替换js/css文件 stylesheetjavascriptcssfunctionnull <script language="javascript"> ...

  7. 集合框架null与size=0

    被QA人员一眼指出来的问题,唉,好丢人 上栗子

  8. Android fragment源码全解析

    Fragment 相信基本上每个android developer都用过,但是知晓其原理 用的好的还是不多,今天就从源码的角度上来带着大家分析一下Fragment的源码,对fragment有了更深层次 ...

  9. 本地Git环境配置

    在Git Bash下获取源码时,提示permission denied publickey. 原因是本地帐号配置不正确,解决办法 生成SSH文件 1,进入Git Bash 2,  输入下面文字 ssh ...

  10. suse下设置IP的两种方法

    /Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up ...