子檢視和關聯
如果 DataSet 的資料表之間存在關聯性,則可以使用 DataView 的 CreateChildView 方法,為父資料表的資料列建立 DataRowView (其包含來自相關子資料表的資料列)。 例如,下列程式碼顯示 Categories (類別) 及與其關聯的 Products (產品) (按 CategoryName 與 ProductName 字母順序排序)。
Dim catTable As DataTable = catDS.Tables("Categories")
Dim prodTable As DataTable = catDS.Tables("Products")
' Create a relation between the Categories and Products tables.
Dim relation As DataRelation = catDS.Relations.Add("CatProdRel", _
catTable.Columns("CategoryID"), _
prodTable.Columns("CategoryID"))
' Create DataViews for the Categories and Products tables.
Dim catView As DataView = New DataView(catTable, "", _
"CategoryName", DataViewRowState.CurrentRows)
Dim prodView As DataView
' Iterate through the Categories table.
Dim catDRV, prodDRV As DataRowView
For Each catDRV In catView
Console.WriteLine(catDRV("CategoryName"))
' Create a DataView of the child product records.
prodView = catDRV.CreateChildView(relation)
prodView.Sort = "ProductName"
For Each prodDRV In prodView
Console.WriteLine(vbTab & prodDRV("ProductName"))
Next
Next
DataTable catTable = catDS.Tables["Categories"];
DataTable prodTable = catDS.Tables["Products"];
// Create a relation between the Categories and Products tables.
DataRelation relation = catDS.Relations.Add("CatProdRel",
catTable.Columns["CategoryID"],
prodTable.Columns["CategoryID"]);
// Create DataViews for the Categories and Products tables.
DataView catView = new DataView(catTable, "", "CategoryName",
DataViewRowState.CurrentRows);
DataView prodView;
// Iterate through the Categories table.
foreach (DataRowView catDRV in catView)
{
Console.WriteLine(catDRV["CategoryName"]);
// Create a DataView of the child product records.
prodView = catDRV.CreateChildView(relation);
prodView.Sort = "ProductName";
foreach (DataRowView prodDRV in prodView)
Console.WriteLine("\t" + prodDRV["ProductName"]);
}
另請參閱
- DataSet
- DataView
- DataRowView
- DataView
- ADO.NET 概觀 \(部分機器翻譯\)