1.使用DateSet DataRelation使主从表相关联
private void test_Load(object sender, EventArgs e)
{
Material_Inventory_DAL midal = new Material_Inventory_DAL();
Material_Inventory_Detail_DAL middal = new Material_Inventory_Detail_DAL();
BindingList<Material_InventoryBean> mibeanlist = midal.Get_Material_InventoryAll();
//创建表结构并给table赋值,如果你直接从数据库获得的是datatable或者dataset就可以省略这一步骤
DataTable dt1 = new DataTable();
dt1.Columns.Add("Inventory_ID");
dt1.Columns.Add("BatchOrder");
dt1.Columns.Add("LOT_No");
dt1.Columns.Add("LOT_Name");
dt1.Columns.Add("QTY");
dt1.Columns.Add("Price");
foreach (var materialInventoryBean in mibeanlist)
{
DataRow dr = dt1.NewRow();
dr["Inventory_ID"] = materialInventoryBean.Inventory_ID;
dr["BatchOrder"] = materialInventoryBean.BatchOrder;
dr["LOT_No"] = materialInventoryBean.LOT_No;
dr["LOT_Name"] = materialInventoryBean.LOT_Name;
dr["QTY"] = materialInventoryBean.QTY;
dr["Price"] = materialInventoryBean.Price;
dt1.Rows.Add(dr);
}
<pre name="code" class="csharp"> BindingList<Material_Inventory_DetailBean> midbeanlist = middal.Get_Material_Inventory_DetailAll();
//创建表结构并给table赋值,如果你直接从数据库获得的是datatable或者dataset就可以省略这一步骤
DataTable dt2 = new DataTable();
dt2.Columns.Add("Inventory_ID");
dt2.Columns.Add("BatchOrder");
dt2.Columns.Add("Applyorder");
dt2.Columns.Add("MoveType");
dt2.Columns.Add("CreateDate");
foreach (var materialInventoryDetailBean in midbeanlist)
{
DataRow dr = dt2.NewRow();
dr["Inventory_ID"] = materialInventoryDetailBean.Inventory_ID;
dr["BatchOrder"] = materialInventoryDetailBean.BatchOrder;
dr["Applyorder"] = materialInventoryDetailBean.Applyorder;
dr["MoveType"] = materialInventoryDetailBean.MoveType;
dr["CreateDate"] = materialInventoryDetailBean.CreateDate;
dt2.Rows.Add(dr); }
//将tables添加进dataset
DataSet ds = new DataSet();
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
//建立关联 即主表的Inventory_ID与从表的Inventory_ID关联
DataRelation DR = new DataRelation("floor2", ds.Tables[0].Columns["Inventory_ID"], ds.Tables[1].Columns["Inventory_ID"]);
ds.Relations.Add(DR);
gridControl1.DataSource = ds.Tables[0];
}
2.使用Bindinglist<>主表绑定从表
private void test_Load(object sender, EventArgs e)
{
Material_Inventory_DAL midal = new Material_Inventory_DAL();
Material_Inventory_Detail_DAL middal = new Material_Inventory_Detail_DAL();
BindingList<Material_InventoryBean> list = new BindingList<Material_InventoryBean>();
Material_InventoryBean mibean = new Material_InventoryBean();
//得到主表的数据datatable
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection("workstation id=Server;packet size=4096;user id=sa;data source=10.17.143.200; persist security info=True;initial catalog=OTIZ;password=su");
SqlDataAdapter sda1 = new SqlDataAdapter("select * from Material_Inventory",connection);
sda1.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
mibean = midal.Populate_Material_InventoryBean_FromDr(dr);
//根据主表信息得到从表的BindingList
mibean.MaterialInventoryDetailBeanList = middal.Get_Material_Inventory_DetailBeanList(mibean);
list.Add(mibean);
}
//绑定到grid的datasource即可
gridControl1.DataSource = list;
}
Designer的设置步骤:
1.创建一个新Level
2.定义主从表要显示的字段
3.显示效果,column宽及表头等自行设置
注意:将GridView2的LevelName改为MaterialInventoryDetailBeanList,即从表的BindingList的名字,否则会显示从表的所有字段。