DataTable.ChildRelations Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene la colección de relaciones secundarias para este DataTable.
public:
property System::Data::DataRelationCollection ^ ChildRelations { System::Data::DataRelationCollection ^ get(); };
[System.ComponentModel.Browsable(false)]
public System.Data.DataRelationCollection ChildRelations { get; }
[System.ComponentModel.Browsable(false)]
[System.Data.DataSysDescription("DataTableChildRelationsDescr")]
public System.Data.DataRelationCollection ChildRelations { get; }
[<System.ComponentModel.Browsable(false)>]
member this.ChildRelations : System.Data.DataRelationCollection
[<System.ComponentModel.Browsable(false)>]
[<System.Data.DataSysDescription("DataTableChildRelationsDescr")>]
member this.ChildRelations : System.Data.DataRelationCollection
Public ReadOnly Property ChildRelations As DataRelationCollection
Valor de propiedad
Colección DataRelationCollection que contiene las relaciones secundarias para la tabla. Si no existe ningún objeto DataRelation, se devuelve una colección vacía.
- Atributos
Ejemplos
En el ejemplo siguiente se usa la ChildRelations propiedad para devolver cada elemento secundario DataRelation de .DataTable A continuación, cada relación se usa como argumento en el GetChildRows método de DataRow para devolver una matriz de filas. A continuación, se imprime el valor de cada columna de la fila.
private static void GetChildRowsFromDataRelation()
{
/* For each row in the table, get the child rows using the
ChildRelations. For each item in the array, print the value
of each column. */
DataTable table = CreateDataSet().Tables["Customers"];
DataRow[] childRows;
foreach(DataRelation relation in table.ChildRelations)
{
foreach(DataRow row in table.Rows)
{
PrintRowValues(new DataRow[] {row}, "Parent Row");
childRows = row.GetChildRows(relation);
// Print values of rows.
PrintRowValues(childRows, "child rows");
}
}
}
public static DataSet CreateDataSet()
{
// create a DataSet with one table, two columns
DataSet dataSet = new DataSet();
// create Customer table
DataTable table = new DataTable("Customers");
dataSet.Tables.Add(table);
table.Columns.Add("customerId", typeof(int)).AutoIncrement = true;
table.Columns.Add("name", typeof(string));
table.PrimaryKey = new DataColumn[] { table.Columns["customerId"] };
// create Orders table
table = new DataTable("Orders");
dataSet.Tables.Add(table);
table.Columns.Add("orderId", typeof(int)).AutoIncrement = true;
table.Columns.Add("customerId", typeof(int));
table.Columns.Add("amount", typeof(double));
table.PrimaryKey = new DataColumn[] { table.Columns["orderId"] };
// create relation
dataSet.Relations.Add(dataSet.Tables["Customers"].Columns["customerId"],
dataSet.Tables["Orders"].Columns["customerId"]);
// populate the tables
int orderId = 1;
for(int customerId=1; customerId<=10; customerId++)
{
// add customer record
dataSet.Tables["Customers"].Rows.Add(
new object[] { customerId,
string.Format("customer{0}", customerId) });
// add 5 order records for each customer
for(int i=1; i<=5; i++)
{
dataSet.Tables["Orders"].Rows.Add(
new object[] { orderId++, customerId, orderId * 10 });
}
}
return dataSet;
}
private static void PrintRowValues(DataRow[] rows, string label)
{
Console.WriteLine("\n{0}", label);
if(rows.Length <= 0)
{
Console.WriteLine("no rows found");
return;
}
foreach(DataRow row in rows)
{
foreach(DataColumn column in row.Table.Columns)
{
Console.Write("\table {0}", row[column]);
}
Console.WriteLine();
}
}
Public Sub GetChildRowsFromDataRelation()
' For each row in the table, get the child rows using the
' ChildRelations. For each item in the array, print the value
' of each column.
Dim table As DataTable = CreateDataSet().Tables("Customers")
Dim childRows() As DataRow
Dim relation as DataRelation
Dim row as DataRow
For Each relation In table.ChildRelations
For Each row In table.Rows
PrintRowValues(new DataRow() {row}, "Parent Row")
childRows = row.GetChildRows(relation)
' Print values of rows.
PrintRowValues(childRows, "child rows")
Next row
Next relation
End Sub
Public Function CreateDataSet() As DataSet
' create a DataSet with one table, two columns
Dim dataSet As DataSet
dataSet = new DataSet()
' create Customer table
Dim table As DataTable
table = new DataTable("Customers")
dataSet.Tables.Add(table)
table.Columns.Add("customerId", _
GetType(Integer)).AutoIncrement = true
table.Columns.Add("name", GetType(String))
table.PrimaryKey = new DataColumn() _
{ table.Columns("customerId") }
' create Orders table
table = new DataTable("Orders")
dataSet.Tables.Add(table)
table.Columns.Add("orderId", GetType(Integer)).AutoIncrement = true
table.Columns.Add("customerId", GetType(Integer))
table.Columns.Add("amount", GetType(Double))
table.PrimaryKey = new DataColumn() { table.Columns("orderId") }
' create relation
dataSet.Relations.Add(dataSet.Tables("Customers").Columns("customerId"), _
dataSet.Tables("Orders").Columns("customerId"))
' populate the tables
Dim orderId As Integer = 1
Dim customerId As Integer
Dim i As Integer
For customerId = 1 To 10
' add customer record
dataSet.Tables("Customers").Rows.Add( _
new object() { customerId, _
string.Format("customer{0}", customerId) })
' add 5 order records for each customer
For i = 1 To 5
dataSet.Tables("Orders").Rows.Add( _
new object() { orderId, customerId, orderId * 10 })
orderId = orderId+1
Next
Next
CreateDataSet = dataSet
End Function
private sub PrintRowValues(rows() As DataRow, label As String)
Console.WriteLine("\n{0}", label)
If rows.Length <= 0
Console.WriteLine("no rows found")
Exit Sub
End If
Dim row As DataRow
Dim column As DataColumn
For Each row In rows
For Each column In row.Table.Columns
Console.Write("\table {0}", row(column))
Next column
Console.WriteLine()
Next row
End Sub
Comentarios
Un DataRelation define la relación entre dos tablas. Normalmente, dos tablas se vinculan a través de un único campo que contiene los mismos datos. Por ejemplo, una tabla que contiene datos de dirección puede tener un único campo que contenga códigos que representen países o regiones. Una segunda tabla que contenga datos de país o región tendrá un único campo que contiene el código que identifica el país o región, y es este código que se inserta en el campo correspondiente de la primera tabla. A DataRelationcontinuación, contiene al menos cuatro fragmentos de información: (1) el nombre de la primera tabla, (2) el nombre de columna de la primera tabla, (3) el nombre de la segunda tabla y (4) el nombre de columna de la segunda tabla.