昨天我们完成了 [原创]Devexpress XtraReports 系列 3 创建主从报表

今天我们继续学习新的一种报表模式:多栏报表。(Demo源码,数据库最后附上)

或许很多人会问什么是多栏报表。

根据官方回答是:以多个列或行 (取决于当前的多栏设置) 呈现数据的报表。

这种报表是有用的,例如,当每个明细区都只显示少量数据、并且需要在一列的右侧打印下一个明细区时,这样就能充分利用整个页面宽度。 此外,当创建有相同内容的 卡片或邮寄地址签、并且需要在许多报表页面上打印大量相同尺寸的卡片时,多栏报表也是有用的。

案例场景:我们有很多产品分别属于不同类别,现在老板说要看看我们不同类别下都有什么产品。为了让老板更加一目了然,多栏报表就派上用场了。如图:也是该案例最后效果图:如果按照传统的Table报表,那么产品名称(如:手镯1,2,3,4,5)会一直往下排,而右边有一大片空间是浪费的,老板看上去也非常费力。此时多栏报表就派上用场了。

开始讲解。

第一步:窗体布局。

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

第二步:创建一个Devexpress XtraReport报表文件。如图:

报表布局步骤如下:(不知道为什么我的设计器是中文的,英文的朋友找到相对应的就行了)

a,新建报表头:即是上图中的ReportHeader,在报表空白区右键点击

b,新建产品类型分组头:即是上图中的GroupHeader(用于类别分组),在报表空白区右键点击

在GroupHeader区域拉入一个XRTable控件。

c,设置明细区一些属性。即是上图中的Detail区的属性

在Detail区域拉入一个XRLabel控件,用于绑定类别下的产品名称。

第三步:Demo数据,如图

第四步,一切准备就绪,接下来就来处理方法事件了。

a,我们需要获取绑定到报表中的数据源,怎么获取呢?

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 ManyColumnData where category=@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, "ManyColumnRpt"); ;
          con.Close();
      }
      catch (Exception ex)
      {
          throw ex;
      }
      return ds;
  }

b,我们要把数据源绑定到报表的相对应的控件上,怎样绑定呢?

在报表文件里,修改其构造函数,用于后面点击按钮传过来的数据源。

public ManyColumnRpt(DataSet ds)
   {
       InitializeComponent();
       this.DataSource = ds;
       this.DataMember = "ManyColumnRpt";
       this.xrTableCell1.DataBindings.Add("Text", ds, "category");
       GroupField gf = new GroupField("category", XRColumnSortOrder.Ascending);//设置GroupHeader分组字段
       ((GroupHeaderBand)(this.FindControl("GroupHeader1", true))).GroupFields.Add(gf);//把分组字段添加进GroupHeader1
       this.xrLabel2.DataBindings.Add("Text", ds, "name");
   }

c,我们需要点击按钮把数据源绑定到报表中,如何做呢?

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

到此,我们就把一个多栏报表完成了。。

希望对大家有帮助。。。最后附上源码以及数据库文件

http://yunpan.cn/QXEibmsrxZp4f  访问密码 d86e

[原创]Devexpress XtraReports 系列 4 创建多栏报表的更多相关文章

  1. [原创]Devexpress XtraReports 系列 9 创建邮件合并报表

    昨天发表了Devexpress XtraReports系列第八篇[原创]Devexpress XtraReports 系列 8 创建Drill-Through报表,今天我们继续. 今天的主题是创建邮件 ...

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

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

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

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

  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. Qt Assistant介绍

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...

  2. 各个 Maven仓库 镜像(包括国内)

    本来之前用的OSC的Maven库,不过最近客户这边换了联通的网络之后,OSC的库就完全连不上了,不知道是不是因为OSC用的是天翼赞助的网络的原因,所以收集了一些其他的镜像库 首推当然还是OSC(不过联 ...

  3. js作用域的一个小例子

    var foo = function(){ var a =3,b=5; var bar = function(){ var b=7,c=11; alert("111a="+a+&q ...

  4. WWDC 2015 - 概记

    WWDC 2015已经过去快一个月了,今年似乎没有像去年那样变化巨大,一切都在慢慢演进,iOS.Mac OS.watchOS都变得越来越好. 新的三大平台的发布,iOS 9/Mac OS EL Cap ...

  5. fmri分析工具:spm里的统计学 Introduction to SPM statistics

     引言 Introduction 需要特别说明,spm是每一个体素为单位,计算统计量,进行t检验. 1.分别在每个体素上做方差分析; 2.对每个体素的方差分析结果,计算t检验统计量; 3.计算等同于t ...

  6. wxWidgets简单的多线程

    #include <wx/wx.h> #include <wx/thread.h> #include <wx/event.h> #include <wx/pr ...

  7. 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...

  8. 【转】Eclipse+PyDev 安装和配置

    原文网址:http://www.51testing.com/html/67/589567-866611.html Python开发有很多工具,其中Eclipse+Pydev 是最常见的一种.本文简单介 ...

  9. ios 内存管理 心得

    - alloc, copy, retain会把引用计数+1 - release会把引用计数-1 - 局部变量如果初始化时不是autorelease的,要及时调用release释放,并且赋值为nil否则 ...

  10. 嵌入式 使用udev高效、动态地管理Linux 设备文件

    本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...