ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DevExpress XtraReports控件通过代码创建主从报表

2021-11-29 11:01:00  阅读:142  来源: 互联网

标签:控件 ChildDt DataBindings DevExpress XtraReports ParentDt Add Text ds


如果一份报表是用来显示分层数据源的数据,则它通常被称为主从报表。本文介绍了在DevExpress XtraReports控件基于DetailReport通过代码绑定主从数据源生成主从报表。以下是报表效果图。

前端设计

前端插入2个嵌套的DetailReport控件。

后端设计

1.获取数据源,并设置两个表主从关系。

        private DataSet GetDataSource()
        {
            DataSet ds = new DataSet();

            string ConStr = SH.Business.Utilities.GetHsLink(ManageProvider.Provider.Current().CompanyId);
            //查询主从2个数据源  
            using (MiniDapper.Database db = new MiniDapper.Database(ConStr, "SqlProvider"))
            {
                string ParentSql = string.Format(@"select A.Id,A.sOrderNo,A.sMaterialLot,A.sMaterialName,A.UserName,A.sCreateTime
from ParentDt A where A.uGuid='{0}'", uGuid);
                var ParentDt = db.GetDataTable(ParentSql);
                ParentDt.TableName = "ParentDt";
                ds.Tables.Add(ParentDt);

                string ChildSql = string.Format(@"select  A.ParentId,A.sCardNo,A.sOrderNo,A.sCustomerName,A.sMaterialLot,A.sMaterialName,A.sColorNo,A.sColorName,A.UserName,A.sCreateTime 
from ChildDt A where A.uGuid='{0}'", uGuid);
                var ChildDt = db.GetDataTable(ChildSql);
                ChildDt.TableName = "ChildDt";
                ds.Tables.Add(ChildDt);
            }
            //给数据集建立主外键关系(主从表)
            DataColumn ParentColumn = ds.Tables["ParentDt"].Columns["Id"];
            DataColumn ChildColumn = ds.Tables["ChildDt"].Columns["ParentId"];
            DataRelation Rel = new DataRelation("RelationColumn", ParentColumn, ChildColumn);
            ds.Relations.Add(Rel);

            return ds;
        }

2.绑定数据到报表文件

public void DataSourceBindings(DataSet ds)
{
    //绑定主表
    DetailReport.DataSource = ds;
    DetailReport.DataMember = "ParentDt";
    lb_sOrderNo.DataBindings.Add("Text", ds, "ParentDt.sOrderNo");
    lb_sMaterialLot.DataBindings.Add("Text", ds, "ParentDt.sMaterialLot");
    lb_sMaterialName.DataBindings.Add("Text", ds, "ParentDt.sMaterialName");
    
    DetailReport1.DataMember = "RelationColumn";
    //绑定从表
    DetailReport1.DataSource = ds;
    this.xc_sCardNo.DataBindings.Add("Text", ds, "RelationColumn.sCardNo");
    this.xc_sColorNo.DataBindings.Add("Text", ds, "RelationColumn.sColorNo");
    this.xc_sColorName.DataBindings.Add("Text", ds, "RelationColumn.sColorName");
}

标签:控件,ChildDt,DataBindings,DevExpress,XtraReports,ParentDt,Add,Text,ds
来源: https://blog.csdn.net/qq243348167/article/details/121604338

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有