2009-07-13 59 views

回答

9

這裏是我的一個類的實例

// create the relationship between Booking and Booking_MNI 
DataRelation relBookingMNI;       
relBookingMNI = new DataRelation("BookingToBookingMNI",dsBooking.Tables["Booking"].Columns["Record_Id"],dsBooking.Tables["Booking_MNI"].Columns["booking_record_id"]); 
dsBooking.Relations.Add(relBookingMNI); 

dsBooking是包含2個表預訂及Booking_MNI 我的主要數據集凡RECORD_ID是主鍵和booking_record_id是外鍵

我改變了下面的代碼來匹配我的第一個例子。但我認爲這是你正在尋找的。在我們的生產代碼中,這將在行的左側產生加號「+」符號,這將允許您鑽入相關表格。我再次拿到了生產代碼,並且看起來像第一個例子,所以我不知道它是否會編譯,但它應該讓你朝着正確的方向前進。

DataTable dtBooking = ds.Tables[0]; 
DataTable dtBooking_MNI = ds.Tables[1]; 

dtBooking.PrimaryKey = new DataColumn[] {dtBooking.Columns["Record_Id"]}; 
dtBooking_MNI.PrimaryKey = new DataColumn[] {dtBooking_MNI.Columns["booking_Record_Id"]}; 

/* Setup DataRelation between the DataTables */ 
DataColumn[] dcBookingColsArray = new DataColumn[1] {dtBooking.Columns["Record_Id"]}; 
DataColumn[] dcBookingMNIColsArray = new DataColumn[1] {dtBooking_MNI.Columns["booking_record_Id"]}; 

DataRelation relBooking_To_MNI = new DataRelation("Booking_To_MNI",dcBookingColsArray,dcBookingMNIColsArray); 
ds.Relations.Add(relBooking_To_MNI_Units); 

// grid where you want to display the relationship 
grdBooking.DataSource = ds; 
+0

謝謝,這是有道理的...現在我會給它一個嘗試:)。 – flavour404 2009-07-13 22:05:47

3

看那的DataRelation類。在DataSet中用於將兩個DataTable關聯在一起。

0

如果您使用Visual Studio 2005或更高版本請嘗試以下操作: 右鍵單擊您的項目,然後選擇「添加/的newitem ...」,然後從嚮導中選擇數據集,這將創造你一些XSD和打開數據集設計器。 現在您可以創建多個表,向每個表添加列並在這些表之間繪製關係(外鍵,帶/不帶級聯...)。自動生成的[YourNewDataSet} .Designer.cs文件中的 ,您將找到這些關係的源代碼。 事情是這樣的:

this.relationFK_DataTable2_DataTable1 = new global::System.Data.DataRelation("FK_DataTable2_DataTable1", new global::System.Data.DataColumn[] { 
        this.tableDataTable2.asdfasColumn}, new global::System.Data.DataColumn[] { 
        this.tableDataTable1.asdfaColumn}, false); 

與往常一樣,你可以去除此代碼頗有些部分,如果你的代碼用手,而不是使用設計。

2

假設您的DataTables命名爲「orders」和「orderDetails」。您希望通過它們的OrderNumber列創建它們之間的關係。我們假定訂單是父級,orderDetails是孩子。我們希望遍歷訂單,然後打印每個相關的小計。

DataSet orderData = new DataSet("OrderData"); 

orderData.Tables.Add(orders); 
orderData.Tables.Add(orderDetails); 

orderData.Relations.Add("Order_OrderDetails", orders.Columns["OrderNumber"], orderDetails.Columns["OrderNumber"]); 

現在,當你想用這種關係別的地方在你的代碼:

DataRelation orderRelation = orderData.Relations["Order_OrderDetails"]; 

foreach (DataRow order in orders.Rows) 
{ 
    Console.WriteLine("Subtotals for Order {0}:", order["OrderNumber"]); 

    foreach (DataRow orderDetail in order.GetChildRows(orderRelation)) 
    { 
     Console.WriteLine("Order Line {0}: {1}", orderDetail["OrderLineNumber"], string.Format("{0:C}", orderDetail["Price"])); 
    } 
} 
1

試試這個這裏是二表1類& 2.產品

 string query = "SELECT * FROM Categories; SELECT * FROM Products"; 

     SqlConnection con = new SqlConnection(); 
     SqlDataAdapter da = new SqlDataAdapter(query,con); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "CategoriesAndProducts");  //CategoriesAndProducts dataset 

     string s = ds.Tables[0].Rows[0]["Name"].ToString(); 
     string s1 = ds.Tables[1].Rows[0]["Name"].ToString(); 

     Console.WriteLine(s); //from categories [0][0] like Electronic 
     Console.WriteLine(s1); //from Products [0][0] like LG