开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 5124|回复: 4

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

[复制链接]

0

精华

935

贡献

265

赞扬

帖子
4122
软币
9958
在线时间
366 小时
注册时间
2013-7-21
发表于 2013-9-5 14:16:35 | 显示全部楼层 |阅读模式
本帖最后由 lhmlyx2723356 于 2013-9-5 14:16 编辑

这篇应该是Dx Reports基础报表系列的最后一篇了。。。。不知不觉已经十篇了,虽然基础。但是希望对大家有帮助。
昨天发表了Devexpress XtraReports系列第九篇]Devexpress XtraReports 系列 9 创建邮件合并报表,今天我们继续。

今天的主题是创建标签报表。

至于什么是标签报表呢?我也具体说不上来。
我只是个人觉得它可以用在打印产品信息(需要附图)的报表。
假如我有很多产品,老板想要看到这些产品的编号,产品的名称,还有产品的图片等信息,我们可以利用标签报表轻松地实现。
下面我展示的是以部门为例。

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

QQ截图20130905103504.png
接下来开始讲解如何一步一步做出这个报表:

第一步
创建如上窗体,拉入控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,简单布局我就不多说了,跟上篇一样的布局 ,详见:http://www.dxper.net/thread-1042-1-1.html

第二步
a,新创建一个报表文件。点击如图:
QQ截图20130905100057.png

b,在弹出的窗体中,选择标签报表。如图:
QQ截图20130905100111.png

然后一直下一步就OK了。
c,添加需要绑定的字段。如图:
QQ截图20130905133516.png


第三步
我们利用数据库做一张简单的表并输入一些测试值。如图:
QQ图片20130905133713.png


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

a,修改报表文件的构造函数,让它在实例化的时候可以接收数据源。
public LabelRpt(DataSet ds)
{
     InitializeComponent();
     this.DataSource = ds;
     this.xrLabel2.DataBindings.Add("Text", ds, "dept_id");
     this.xrLabel3.DataBindings.Add("Text", ds, "dept_name");
}

//为了让XRRichText控件中承载的XRPictureBox控件显示出数据库中测试数据中的jpg图片,其实这些图片是存放在程序运行目录下,如图:
QQ图片20130905133701.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, "LabelRpt"); ;
              con.Close();
          }
          catch (Exception ex)
          {
              throw ex;
          }
          return ds;
      }

c,单击按钮,绑定数据到报表中
private void btnShowReport_Click(object sender, EventArgs e)
{
    DataSet ds = BindRpt();
    LabelRpt Rpt = new LabelRpt(ds);
    this.documentViewer1.DocumentSource = Rpt;
    Rpt.CreateDocument();
}

到此,标签报表就完成了。
又到了屌丝福利时间,哈哈。。。
f9198618367adab46bc5c2bd8ad4b31c8701e433.jpg
别忘了点赞呀。。。嘿嘿。。您的赞是我最大的动力。。。
Demo地址:http://yunpan.cn/QXhqJfuPK5bpt  访问密码 0e22


评分

参与人数 3贡献 +8 赞扬 +3 收起 理由
阿力 + 1 Thanks
dsir + 1 赞一个
羽叶 + 8 + 1 赞一个

查看全部评分

回复

使用道具 举报

0

精华

5095

贡献

5276

赞扬

管理员

帖子
1149
软币
20969
在线时间
4317 小时
注册时间
2013-6-7

黄马甲

发表于 2013-9-5 14:25:14 | 显示全部楼层
楼主给力,真好看
回复

使用道具 举报

0

精华

935

贡献

265

赞扬

帖子
4122
软币
9958
在线时间
366 小时
注册时间
2013-7-21
 楼主| 发表于 2013-9-5 14:27:44 | 显示全部楼层
天堂羽叶 发表于 2013-9-5 14:25
楼主给力,真好看

哈哈,谢谢坛主,一切以您的口味找图。。
回复

使用道具 举报

0

精华

935

贡献

265

赞扬

帖子
4122
软币
9958
在线时间
366 小时
注册时间
2013-7-21
 楼主| 发表于 2013-9-5 14:28:18 | 显示全部楼层
天堂羽叶 发表于 2013-9-5 14:25
楼主给力,真好看

重口味。哈哈
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-4-28 21:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表