Articles in this section
Category / Section

How to change the dropdown list of the child table with respect to the value of the parent record in WinForms GridGroupingControl?

2 mins read

Get parent record value

The value of the parent record can be retrieved through the ParentRecord.GetValue() method when the current cell is in the nested table. The following code example gets the value from a CheckBox in the parent row (the column name is check) and changes the DataSource of the ComboBoxes in the nested tables. In the QueryCellStyleInfo event, the parent record's value is retrieved as an object (o). With the object, the DataSources of the nested tables are changed.

C#

//Hooks QueryCellStyleInfo event in the Form_Load to change the DataSource for the DropDown.
this.gridGroupingControl1.QueryCellStyleInfo += gridGroupingControl1_QueryCellStyleInfo;
private void gridGroupingControl1_QueryCellStyleInfo(object sender, GridTableCellStyleInfoEventArgs e)
{
   //ChildTable had the ComboBox column named "dropCol."
   if(e.TableCellIdentity.Column != null && e.TableCellIdentity.Column.Name == "dropCol" && e.TableCellIdentity.DisplayElement is GridRecordRow)
   {
      object o = e.TableCellIdentity.DisplayElement.ParentChildTable.ParentNestedTable.ParentRecord.GetValue("check");
      this.gridGroupingControl1.TableModel.ResetVolatileData();
      //Changes the DataSource for the ComboBox by using the Parent value.
      if(o != System.DBNull.Value && o != null && o.ToString()=="True" )
      {
         e.Style.DataSource = colors;
         e.Style.CellType = "ComboBox";
      }
      else
      {
         e.Style.DataSource = shapes;              
         e.Style.CellType = "ComboBox";
      }
   }
}

VB

'Hooks QueryCellStyleInfo event in the Form_Load to change the DataSource for the DropDown.
Private Me.gridGroupingControl1.QueryCellStyleInfo += AddressOf gridGroupingControl1_QueryCellStyleInfo
Private Sub gridGroupingControl1_QueryCellStyleInfo(ByVal sender As Object, ByVal e As GridTableCellStyleInfoEventArgs)
   'ChildTable had the ComboBox column named "dropCol."
   If e.TableCellIdentity.Column IsNot Nothing AndAlso e.TableCellIdentity.Column.Name = "dropCol" AndAlso TypeOf e.TableCellIdentity.DisplayElement Is GridRecordRow Then
      Dim o As Object = e.TableCellIdentity.DisplayElement.ParentChildTable.ParentNestedTable.ParentRecord.GetValue("check")
      Me.gridGroupingControl1.TableModel.ResetVolatileData()
      'Changes the DataSource for the ComboBox by using the Parent value.
      If o IsNot System.DBNull.Value AndAlso o IsNot Nothing AndAlso o.ToString()="True" Then
         e.Style.DataSource = colors
         e.Style.CellType = "ComboBox"
      Else
         e.Style.DataSource = shapes
         e.Style.CellType = "ComboBox"
      End If
   End If
End Sub

The following screenshots show the ComboBox DataSource changed when the parent field is checked or unchecked.

Show combobox when the parent field is checked

Figure 1: ComboBox when the Parent field is “checked”

Show combobox when the parent field is unchecked

Figure 2: ComboBox when the parent field is “unchecked”

Samples:

C#: GGCGetValue-C#-636098358.zip

VB: GGCGetValue-VB-801966658.zip

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