彩票走势图

[DevExpress]如何在XtraReports中创建主从报表

转帖|使用教程|编辑:龚雪|2017-02-03 11:37:02.000|阅读 1030 次

概述:

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

1.建立一个WinForm窗体,从工具箱中拉入控件

SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl

2. 创建一个Devexpress XtraReport报表文件

3. 在报表中建立一个ReportHeader

4. 右键单击报表文件空白区域,添加一个从报表DetailReport

5. 在ReportHeader 拉入一个XRLabel 修改Text属性为:主从报表,并在Detail和DetailReport区分别拉入一个XRTable控件(XRTable默认三列)

6. 创建数据源表

7. 处理相对应的主从表关系绑定

a,按钮事件

private void btnShowReport_Click(object sender, EventArgs e)
{
    DataSet ds = BindRpt();
    MasterDetailRpt Rpt = new MasterDetailRpt(ds);
    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"); 
}

(参考来源:cnblogs-Mr.Ming)

想要了解更多DevExpress使用技巧?海量视频课程以及最专业的DevExpress培训尽在。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP