三.代码设计-DevExpress主从表-C/S快速开发框架-标准版V2.3
3.1 预览报表
private void button3_Click(object sender, EventArgs e)
{
XtraReport_MasterDetail mMyReport = new XtraReport_MasterDetail(); //报表实例
DataSet data = DAL.GetMasterDetailData();//取销售订单主从表数据
mMyReport.SetReportDataSource(data);//绑定报表的数据源
//打开报表预览窗体
frmReportPreview.DoPreviewReport(mMyReport, this);
}
具体步骤:
- 创建报表实例。
- 通过DAL层获取报表数据,返回DataSet类型,包含两张数据表,分别为tb_SO, tb_SOs。
- 调用自定义方法SetReportDataSource,绑定数据源。(重要)
- 打开预览窗体显示报表。
3.2 给主从表报表配置数据源 (重要)
/// <summary>
/// 设置主从表的数据源
/// </summary>
/// <param name="reportData"></param>
public void SetReportDataSource(DataSet reportData)
{
//因涉及到修改DataSet的内部属性,建议创建副本进行操作。
DataSet ds = reportData.Copy();//创建副本
//重要!!!给组(GroupHeader)绑定主键字段
//本报表是按业务单号分组
GroupField gf = new GroupField("SONO", XRColumnSortOrder.Ascending);
GroupHeader1.GroupFields.Add(gf);
//给数据集建立主外键关系
DataColumn parentColumn = ds.Tables["tb_SO"].Columns["SONO"];
DataColumn childColumn = ds.Tables["tb_SOs"].Columns["SONO"];
DataRelation R1 = new DataRelation("R1", parentColumn, childColumn);
ds.Relations.Add(R1);
//绑定主表的数据源
this.DataMember = "tb_SO";
this.DataSource = ds;
//绑定明细表的数据源
this.DetailReport.DataMember = "R1";
this.DetailReport.DataSource = ds;
//自动绑定明细表XRLabel的数据源
this.BindingFields(ds, this.Detail1.Controls);
xrLabel15.DataBindings.Add("Text", ds, "R1.Amount");//绑定小计(当前单据的总金额)
xrLabel23.DataBindings.Add("Text", ds, "R1.Amount");//绑定总计(所有单据的总金额)
}
3.3 设置主从表数据源SetReportDataSource方法
- 报表是按业务单号分组,给组(GroupHeader)绑定业务主键字段。
- 给数据集建立主外键关系,XtraReport是跟据DataRelation指定的主外键关系自动过滤明细表数据的。
- 绑定主表数据源。
- 绑定从表数据源,注意:明细表的数据是跟据DataRelation自动过滤,所以DataMember必须指定为DataRelation的名称。
- 自动绑定明细表XRLabel的数据源,这里必须通过DataBinding绑定数据源!
- 绑定小计及总计的数据源。
总结:
主/从表报表比较复杂,特别是XtraReport必须给数据集建立主外键关系(DataRelation),但通过本文的详细介绍我相信您完全可以开发一份简单的主从报表了。
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
CSV2 C/S框架网