zoukankan      html  css  js  c++  java
  • [原创]Devexpress XtraReports 系列 5 创建交叉报表

    昨天我们已经介绍了如何创建多栏报表,详见:[原创]Devexpress XtraReports 系列 4 创建多栏报表

    今天我们继续我们的XtraReports系列。Demo和数据库文件最后会附上。

    今天的主题是:创建交叉报表

    什么是交叉报表呢?

    官方回答:交叉表报表是以交叉表形式呈现信息的报表。 交叉表 (或透视表) 类似于简单的普通数据绑定表格,但是改为在单个表格中呈现多维的分层级的信息,并含有每行和每列的自动排序、计数、合计和累计。

    依照惯例,我们先来看看我们最后实现的效果,如图:

    案例场景:某公司可能有产品1-12,分别属于产品类别1-3,现在要统计这些产品都被客户订购了多少数量。

    QQ截图20130829131215

    开始讲解。


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

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

    报表布局步骤如下:(不知道为什么我的设计器是中文的,英文的朋友找到相对应的就行了)
    a,新建报表头:即是上图中的ReportHeader,在报表空白区右键点击

    b,在工具箱拖入一个XRPivotGrid控件,用来承载交叉报表所需数据源。

    选中XRPivotGrid控件,然后按照下图设置属性

    QQ图片20130829131910

    b,点击下面的设计器,在弹出的列编辑器中,分别修改新增的三列的绑定字段属性,还有显示名称。

    QQ截图20130829132217

    c,那如何让数据以交叉形式显示呢?

    我们还需要设置一个属性,如图:

    QQ截图20130829134655

    第三步,准备数据源,如图:一个产品类别字段category,一个产品名称字段name,一个订购数量字段orderamount。

    QQ截图20130829134821

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

    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 CrossRptData 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, "CrossTableRpt"); ;
            con.Close();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return ds;
    }

    b,修改报表文件默认构造函数,让其可以接收数据源并绑定

    public CrossTableRpt(DataSet ds)
    {
        InitializeComponent();
        this.xrPivotGrid1.DataSource = ds;
        //this.xrPivotGrid1.OptionsView.ShowColumnHeaders = false;//不显示列头
        //this.xrPivotGrid1.OptionsView.ShowDataHeaders = false;//不显示数据头

    c,处理显示报表按钮事件。把数据源传递给报表,并展示出来。

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

    到此,我们就把一个交叉报表完成了。。
    希望对大家有帮助。。。最后附上源码以及数据库备份文件

    http://yunpan.cn/QXeykYVDYnKyP  访问密码 b402

  • 相关阅读:
    Running ASP.NET Applications in Debian and Ubuntu using XSP and Mono
    .net extjs 封装
    ext direct spring
    install ubuntu tweak on ubuntu lts 10.04,this software is created by zhouding
    redis cookbook
    aptana eclipse plugin install on sts
    ubuntu open folderpath on terminal
    ubuntu install pae for the 32bit system 4g limited issue
    EXT Designer 正式版延长使用脚本
    用 Vagrant 快速建立開發環境
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/3292820.html
Copyright © 2011-2022 走看看