Devexpress Xtrareports 创建多栏报表

 

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

 

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

场景:

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

 

 

第一步

  窗体布局

    新建一个窗体,拉入控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,无非就是设置空间Dock属性,还有字体Text属性等,简单布局我就不多阐述了。

第二步

  创建一个Devexpress Xtrareport报表文件

  

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

  

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

 

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

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

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

  

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

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; 
  }

  

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

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

 

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"); 
   }

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

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

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

 

posted @ 2018-05-02 16:03  WhiteSpace  阅读(744)  评论(0编辑  收藏  举报