如何在相同数据集中的表之间建立关系?
你尝试类似:
ds.Relations.Add("Products_Category",
ds.Tables("Categories").Columns("CategoryID"),
ds.Tables("Products").Columns("CategoryID"));
如果您正在创建一个类型化的DataSet,这是最简单的创建在Visual Studio中的数据集设计的关系。只需右键单击设计器中的表格,选择Add-> Relation,然后指定关系。
如果你需要在代码中指定的关系,你可以做这样的:
dataSet.Relations.Add(dataSet.Tables["Customers"].Columns["customerId"],
dataSet.Tables["Orders"].Columns["customerId"]);
阅读所有关于它在MSDN here。
但我从webservice获取所有表并将其绑定到数据集中。现在我想在这些表格之间建立关系,并在网格中显示一些重要的数据。请帮助我。 – Ashish 2010-01-02 21:03:05
我的回答完全描述了如何做到这一点。 – 2010-01-02 21:08:31
这是一个DataTables
在DataSet
有大量。
我会考虑的第一件事情是通过用加入数据库表的查询填充DataTables
来减少DataTables
的数量(并且不需要Relations
)。例如,可以将一个DataTable
用于产品类别,另一个用于产品详细信息,也可以将两个数据库表的数据合并为一个DataTable
。同样,对于客户,客户地址和客户电话,通过使用在所有三个数据库表上执行JOIN的一个查询来检索一个DataTable中的所有数据。
一旦你在DataSet
最小的DataTables
数量,你可以DataTables
之间添加Relations
如果他们匹配的列(即使列有不同的名称)。例如,可能会有订单DataTable
,其CustomerID列与Customers DataTable
中的ID列匹配。
以下是在此情况下将Relation
添加到DataSet
的代码。假设我们有一个DataSet
dst包含两个DataTables
客户和订单。
DataColumn customerColumn, orderColumn;
customerColumn = dst.Tables["Customers"].Columns["ID"];
orderColumn = dst.Tables["Orders"].Columns["CustomerID"];
DataRelation dr = new DataRelation("CustomerOrders", customerColumn, orderColumn);
dst.Relations.Add(dr);
ds.Relations.Add("Products_Category",
ds.Tables("Categories").Columns("CategoryID"),
ds.Tables("Products").Columns("CategoryID"));
阿希什,你问了一个非常具体的问题交代(“如何与一个数据集表”)。如果删除第二个更广泛和更模糊的问题(“如何在网格中显示相关数据”),则会在此处获得更好的结果。 – 2010-01-02 20:54:39