zoukankan      html  css  js  c++  java
  • 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(); 
    }
    
    到此,我们就把一个多栏报表完成了。。
  • 相关阅读:
    JVM简单入门
    10 张图聊聊线程的生命周期和常用 APIs
    Spring Cloud实战 | 最八篇:Spring Cloud +Spring Security OAuth2+ Axios前后端分离模式下无感刷新实现JWT续期
    ueditor 插入视频代码解析
    CentOS下添加新硬盘并分区格式化的详细步骤
    Java 8 stream
    crontab命令详解
    计算机网络自顶向下学习杂记
    nginx安装
    js识别PC和H5
  • 原文地址:https://www.cnblogs.com/xiaowie/p/8980782.html
Copyright © 2011-2022 走看看