在使用报表的时候,有很多需要主从表一起显示,从表不需要另外弹窗显示明细,反而直接显示在主表下方。如图所示:
该效果的实现代码如下:
//主表
//调用存储过程获取数据源,sp是存储过程参数,存储过程内返回两个table,一个是主表数据,一个是从表数据
DataSet mainDS = Common.SqlHelper.ExecuteDataset(Common.SqlHelper.connString, CommandType.StoredProcedure, "BalanceInformation", sp);
DataTable mainDT = mainDS.Tables[0];
mainDT.TableName = "Main";
DataSet detailDS = new DataSet();
if (mainDT.Rows.Count > 0)
{
//子表
DataTable detailDT = mainDS.Tables[1];
detailDT.TableName = "Detail";
mainDS.Tables.Remove(detailDT);
mainDS.Tables.Add(detailDT);
}
//设定关系,ds.a(表).MainId(字段)=ds.b(表).MainId
DataRelation dr = new DataRelation("明细", mainDS.Tables["Main"].Columns["MainId"], mainDS.Tables["Detail"].Columns["MainId"]);
mainDS.Relations.Add(dr);
//绑定数据源
dt = mainDS.Tables["Main"];
gridControl1.DataSource = dt;