前两天遇到一个小需求,需要将一个报表做成主从表的形式,点击主表信息显示子表信息,刚开始也是很苦恼,后来看了许多大家的记录和经验有了思路,最终实现效果如下:
下面也为大家提供下思路,其实实现这个最重要的是关联主表和子表的关系,首先需要在设计器里加上从表层级,如下图
其它在代码里实现,因为我是想要实现我想要展示的从表字段,主从表并没有主外键的关系,所以我的做法是如下:
DataTable dtSource = new DA_Report().GetQCC(txtItemCode.Text.Trim(), txtBeginDate.EditValue.ToString(), txtEndDate.EditValue.ToString());//主表数据
DataTable dtSourceDetail = new DA_Report().GetDQCC(txtItemCode.Text.Trim(), txtBeginDate.EditValue.ToString(), txtEndDate.EditValue.ToString());//从表数据
DataSet ds = new DataSet();
ds.Tables.Add(dtSource);
ds.Tables.Add(dtSourceDetail);
ds.Tables[0].TableName = "Main";
ds.Tables[1].TableName = "Detail";
//设定关系
DataRelation relation = new DataRelation("明细", ds.Tables["Main"].Columns["ITEMCODE"], ds.Tables["Detail"].Columns["物料编号"]);
ds.Relations.Add(relation);
//绑定数据
gridControl1.DataSource = ds.Tables[0];
大概意思就是查出主表和子表显示的信息,将两个表放进DataSet里然后设定关系,这是主从表最重要的,然后写上两个表关联的字段,最后绑定数据,这样就实现拉,注意在设定关系里的关联字段一定要是你表里对应的字段,就是DataTable里有的字段,不然会报错