zoukankan      html  css  js  c++  java
  • [原创]Devexpress XtraReports 系列 9 创建邮件合并报表

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

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

    什么是邮件合并报表呢?

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

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

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

    支持邮件合并的控件有:

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

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

    QQ图片20130903220144 

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

    第一步

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

    第二步

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

    QQ截图20130903222240

         第三步

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

    QQ截图20130903222401

    第四步

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

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

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

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

    QQ图片20130903222719

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

    我们应该处理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

  • 相关阅读:
    词法定界
    Lua 多维表的遍历中的赋值
    mac虚拟机parallels 无法启动 "Windows 7" 虚拟机
    MAC下Android的Eclipse开发环境的搭建
    Lua 的函数库 01
    mac 安装lua并配置Subline Text2 的lua开发环境
    Sublime Text2 注册码 汉化 配置lua开发环境
    js 月历 时间函数 月份第一天 星期的判断
    android 判断app是否处于前台
    android 更新下载apk
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/3302585.html
Copyright © 2011-2022 走看看