Compartir a través de


Explorar relaciones mediante DataView

Si existe una relación entre tablas de un DataSet, puede crear una DataView que contenga filas de la tabla secundaria relacionada si utiliza el método CreateChildView de la DataRowView para las filas de la tabla primaria. Por ejemplo, en el código siguiente se muestran las categorías de la tabla Categories y los productos relacionados de la tabla Products en orden alfabético ordenados por CategoryName y 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 catProdRel 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(catProdRel)
  prodView.Sort = "ProductName"

  For Each prodDRV In prodView
    Console.WriteLine(vbTab & prodDRV("ProductName"))
  Next
Next
[C#]
DataTable catTable = catDS.Tables["Categories"];
DataTable prodTable = catDS.Tables["Products"];

// Create a relation between the Categories and Products tables.
DataRelation catProdRel = 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(catProdRel);
  prodView.Sort = "ProductName";

  foreach (DataRowView prodDRV in prodView)
    Console.WriteLine("\t" + prodDRV["ProductName"]);
}

Vea también

Ver datos mediante DataView | Crear y utilizar DataViews | DataSet (Clase) | DataView (Clase) | DataRowView (Clase)