2009-07-13 62 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