[原创]Devexpress XtraReports 系列 3 创建主从报表

昨天写了系列的第二篇Devexpress XtraReports 系列 2 创建表格报表

今天我们来继续系列 3 创建主从报表

首先我们来看看最后实现的效果。Demo最后附上。

 QQ截图20130828110806

开始吧。

第一步,建立一个WinForm窗体,从工具箱中拉入控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,简单布局(见效果图)我就不多阐述了。

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

QQ截图20130828112328

在报表中首先建立一个ReportHeader,如图

在报表文件空白区域右键QQ图片20130828112653

然后添加一个从报表DetailReport:如图

QQ截图20130828112813

接着在ReportHeader 拉入一个XRLabel 修改Text属性为:主从报表(至于字体大小属性等修改,个人有各自喜好的字体大小,颜色,我就不多累赘介绍了。)

然后在Detail和DetailReport区分别拉入一个XRTable控件(XRTable默认三列)。根据字段需要添加删除列数。

至此,报表布局也完成了。

第三步,创建数据源表。如图:一个部门主表,一个人员从表,一对多的关系,一个部门下有多个人员。利用dept_id关联。

QQ图片20130828113517 QQ截图20130828113622

第四步,让我们来处理相对应的主从表关系绑定吧。

很简单,效果就是要点击显示报表按钮,让数据源绑定到报表中。我们如何做呢?

a,按钮事件

private void btnShowReport_Click(object sender, EventArgs e)
{
    DataSet ds = BindRpt();
    MasterDetailRpt Rpt = new MasterDetailRpt(ds);//注意:修改我们新建的MasterDetailRpt报表文件的构造函数。让其可以接收我们传递的数据源。
    this.documentViewer1.DocumentSource = Rpt;
    Rpt.CreateDocument();
}

 

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

private DataSet BindRpt()
   {

       DataSet ds = new DataSet();
       try
       {
           //连接数据源,给Rpt绑定数据源,包含两个数据表
           //在示例中为了方便就不写存储过程了,(日常工作中存储过程方便维护)
           SqlConnection con = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=ReportDeom");
           SqlDataAdapter adapter;
           con.Open();

           //表1
           SqlCommand cmd = new SqlCommand("SELECT * FROM Dept where dept_name=@dept_name OR @dept_name='' ", con);
           SqlParameter[] paras = new SqlParameter[]{
           new SqlParameter("@dept_name",txtdept_name.Text)
       };
           cmd.Parameters.AddRange(paras);
           adapter = new SqlDataAdapter(cmd);
           adapter.Fill(ds, "Dept");

           //表2
           SqlCommand cmd2 = new SqlCommand("select  * FROM  Users where dept_id in (select dept_id from Dept where dept_name=@dept_name OR @dept_name='')  ", con);
           SqlParameter[] paras2 = new SqlParameter[]{
           new SqlParameter("@dept_name",txtdept_name.Text)
       };
           cmd2.Parameters.AddRange(paras2);
           adapter = new SqlDataAdapter(cmd2);
           adapter.Fill(ds, "User");
           con.Close();

           //给数据集建立主外键关系(主从表)
           DataColumn ParentColumn = ds.Tables["Dept"].Columns["dept_id"];
           DataColumn ChildColumn = ds.Tables["User"].Columns["dept_id"];
           DataRelation Rel = new DataRelation("RelationColumn", ParentColumn, ChildColumn);
           ds.Relations.Add(Rel);
       }
       catch (Exception ex)
       {

           throw ex;
       }

       return ds;
   }

c,绑定数据到报表文件

public MasterDetailRpt(DataSet ds)
{
    InitializeComponent();
    //绑定主表
    this.DataSource = ds;
    this.DataMember = "Dept";
    this.xrTableCell3.DataBindings.Add("Text", ds, "Dept.dept_name");
    DetailReport.DataMember = "RelationColumn";
    //绑定从表
    DetailReport.DataSource = ds;
    this.xrTableCell1.DataBindings.Add("Text", ds, "RelationColumn.user_id");
    this.xrTableCell2.DataBindings.Add("Text", ds, "RelationColumn.username"); 
}

 

 

到此, 基于Devexpress XtraReport主从报表就完成了。

希望对初学者有点帮助。谢谢。

Demo(包括数据库文件) :http://yunpan.cn/QXESD5YscCfkw  访问密码 b675

转载于:https://www.cnblogs.com/lhmlyx2723356/p/3288363.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DevExpress XtraReports是一款功能强大的报表工具,用于在.NET平台上创建和生成各种类型的报表。它提供了丰富的报表设计和生成功能,使用户可以轻松地设计和定制自己的报表DevExpress XtraReports拥有直观的可视化界面,用户可以通过拖放、调整大小和设置属性等方式来设计报表。它支持多种数据源,包括数据库、XML文件、Excel等,用户可以根据自己的需求选择合适的数据源进行报表设计。 在报表生成方面,DevExpress XtraReports提供了丰富的布局和格式化选项,可以设置报表的样式、字体、颜色等。同时,它还支持数据汇总、图表和交叉表等功能,使用户可以根据需要自定义报表的布局和内容。 此外,DevExpress XtraReports还具有高度可扩展性和灵活性。它支持多种输出格式,包括PDF、HTML、Excel等,用户可以将报表导出为各种常用的文件格式。同时,它还提供了丰富的API接口,可以与其他开发工具和框架集成,满足用户的特定需求。 总之,DevExpress XtraReports是一款强大的报表工具,可帮助用户快速创建专业、定制化的报表。它的可视化设计界面、多种数据源支持和丰富的布局选项,使用户能够轻松地设计、生成和定制自己的报表。同时,它的高度可扩展性和灵活性,使用户可以根据需要将报表导出为各种格式,并与其他开发工具和框架进行集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值