2013年7月11日 星期四

DataSet建立DataRelation

DataRelation的基本觀念在於,DataTable與DataTable之間,如果要建立關聯性,必須存在於同一個DataSet,再將DataTable加入分為Parent及Child的概念,建立關聯性程式碼如下:
 
private void CreateRelation() 
{
    // 建立Parent的關聯欄位
    DataColumn parentColumn = DataSet1.Tables["Customers"].Columns["CustID"];
    // 建立Chlid的關聯欄位
    DataColumn childColumn = DataSet1.Tables["Orders"].Columns["CustID"];
    // 建立關連性
    DataRelation rel = new DataRelation("CusOrd", parentColumn, childColumn);
    // 將關聯性置於DataSet中
    DataSet1.Relations.Add(rel);
}
 
讀取資料的方是如下:
 
//由Parent角度讀取Child資料
for(DataRow row in DataSet1.Tables["Customers"].Rows)
{
    //多筆->回傳陣列
      DataRow[] dr = row.GetChildRows("CustomersOrders");
      for(int i=0; i< dr.count; i++)
      {
            //process dr (即關聯中的Orders)資料
      }
}
 
//由Child角度讀取Parent資料
foreach(DataRow row in DataSet1.Tables["Orders"].Rows)
{
    //單筆
    DataRow parentRow = row.GetParentRow("CustomersOrders");
}