Articles in this section

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

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.


//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";
      }
   }
}
'Hook the QueryCellStyleInfo event in Form_Load
AddHandler Me.gridGroupingControl1.QueryCellStyleInfo, AddressOf gridGroupingControl1_QueryCellStyleInfo

Private Sub gridGroupingControl1_QueryCellStyleInfo(ByVal sender As Object, ByVal e As GridTableCellStyleInfoEventArgs)
    'ChildTable has a 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()

        'Change the DataSource for the ComboBox based on the parent value
        If o IsNot 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)
Access denied
Access denied