Articles in this section
Category / Section

How to access the corresponding parent table's row from a child table's record in WinForms GridGroupingControl?

2 mins read

Accessing parent table rows using child table record

To access the parent table’s row from the child table record, get the table's current element. Then, cast that element to the GridNestedTable. Now, you can access the parent table for the current element.

C#

//Hook the button Click event in Form_Load
this.btnGetRecord.Click += new System.EventHandler(this.btnGetRecord_Click);
private void btnGetRecord_Click(object sender, EventArgs e)
{
   //Get the current element from the TableControl
   Element el = this.gridGroupingControl1.TableControl.Table.CurrentElement;
   if(el != null)
   {
      if(el is GridRecord)
      {
         Console.WriteLine("no parent row...");
         textBox1.Text = "no parent row...";
      }
      else if(el is GridNestedTable)
      {
         //Get the element as the nested table
         GridNestedTable gridNestedTable = el as GridNestedTable;
         GridNestedTable gridNestedTable1 = gridNestedTable;
         //Loop untill get the parent record of the current element
         while (gridNestedTable1 != null && gridNestedTable1.ChildTable != null)
         {
             gridNestedTable = gridNestedTable1;
             gridNestedTable1 = gridNestedTable.ChildTable.ParentTable.CurrentElement as      GridNestedTable;
         }
         DataRowView dataRowView = gridNestedTable.ParentRecord.GetData() as DataRowView;
         //Write the Column 2
         Console.WriteLine(dataRowView[1].ToString());
         //show column 2
         textBox1.Text = dataRowView[1].ToString();
      }
   }
}

VB

'Hook the button Click event in Form_Load
AddHandler btnGetRecord.Click, AddressOf btnGetRecord_Click
Private Sub btnGetRecord_Click(ByVal sender As Object, ByVal e As EventArgs)
   'Get the current element from the TableControl
   Dim el As Element = Me.gridGroupingControl1.TableControl.Table.CurrentElement
   If el IsNot Nothing Then
      If TypeOf el Is GridRecord Then
         Console.WriteLine("no parent row...")
         textBox1.Text = "no parent row..."
      ElseIf TypeOf el Is GridNestedTable Then
         'Get the element as the nested table
         Dim gridNestedTable As GridNestedTable = TryCast(el, GridNestedTable)
         Dim gridNestedTable1 As GridNestedTable = gridNestedTable
         'Loop untill get the parent record of the current element
         Do While gridNestedTable1 IsNot Nothing AndAlso gridNestedTable1.ChildTable IsNotNothing
              gridNestedTable = gridNestedTable1
              gridNestedTable1 = TryCast(gridNestedTable.ChildTable.ParentTable.CurrentElement, GridNestedTable)
         Loop
         Dim dataRowView As DataRowView = TryCast(gridNestedTable.ParentRecord.GetData(), DataRowView)
         'Write the Column 2
         Console.WriteLine(dataRowView(1).ToString())
         'show column 2
         textBox1.Text = dataRowView(1).ToString()
      End If
   End If
End Sub

The following screenshot illustrates the output.

Accessing parent table rows using child table records

Figure 1: Accessing Parent Table Rows using Child Table Records

Samples:

C#: AccessParentTableRecords

VB: AccessParentTableRecords

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied