Syncfusion GridGroupingControl supports hierarchical data representation. If the grid displays data of multiple nested data tables, then each data row can have child rows containing data associated with this row. To view the child data, the user needs to expand its parent row and the child table itself. The grid data can also be grouped by one or several columns, so the individual rows are organized into groups. This topic explains how you can expand and collapse rows and groups in the GridGroupingControl from your test scripts:
![]()  | 
To perform these actions, TestComplete should have access to internal objects, properties and methods of the GridGroupingControl object. For this purpose, the .NET Application Support and Syncfusion Systems Control Support plugins must be installed and enabled. The latter lets you work with the GridGroupingControl controls using methods and properties of the SyncfusionEssGrid object. Without this plugin, you will not be able to work with  controls using their internal methods and properties.When testing Syncfusion GridGroupingControl controls, use specific methods and properties of the corresponding   | 
Using the SyncfusionEssGrid.Expand and Collapse Actions
The SyncfusionEssGrid object provides a number of Expand and Collapse actions that can be used to expand and collapse various types of items in the Syncfusion GridGroupingControl:
- The 
ExpandandCollapseactions let you expand and collapse data rows that have child tables. To determine whether a particular data row is expanded, you can use thewExpandedproperty. - The 
ExpandGroupandCollapseGroupactions let you expand and collapse groups. ThewGroupExpandedproperty specifies whether a particular group is expanded or collapsed. - The 
ExpandChildViewandCollapseChildViewactions let you expand and collapse child tables. To check whether a child table is expanded, use thewChildViewExpandedproperty. 
The following example illustrates how you can expand and collapse rows, groups and tables in Syncfusion GridGrouping control using the mentioned actions. This example works with the HierarchySample application that comes with the Syncfusion Essential Studio library.
JavaScript, JScript
function Main ()
{
  var  p, Grid;
  // Obtain the grid object
  p = Sys.Process("HierarchySample");
  p.WinFormsObject("Form1").Maximize();
  Grid = p.WinFormsObject("Form1").WinFormsObject("groupingGrid1");
  // Collapse items in the last row
  Grid.wChildView(7, "Products").CollapseGroup(3);
  Grid.CollapseChildView(7, "Products");
  Grid.Collapse(7);
  // Expand 1st elements in the 1nd row
  Grid.Expand(0);
  Grid.ExpandChildView(0, "Products");
  Grid.wChildView(0, "Products").ExpandGroup(0);
  Grid.wChildView(0, "Products").wGroup(0).Expand(0);
  Grid.wChildView(0, "Products").wGroup(0).ExpandChildView(0, "OrderDetails");
  Grid.wChildView(0, "Products").wGroup(0).wChildView(0, "OrderDetails").ExpandGroup(0);
}
Python
def Main ():
  # Obtain the grid object
  p = Sys.Process("HierarchySample")
  p.WinFormsObject("Form1").Maximize()
  Grid = p.WinFormsObject("Form1").WinFormsObject("groupingGrid1")
  # Collapse items in the last row
  Grid.wChildView(7, "Products").CollapseGroup(3)
  Grid.CollapseChildView(7, "Products")
  Grid.Collapse(7)
  # Expand 1st elements in the 1nd row
  Grid.Expand(0)
  Grid.ExpandChildView(0, "Products")
  Grid.wChildView(0, "Products").ExpandGroup(0)
  Grid.wChildView(0, "Products").wGroup(0).Expand(0)
  Grid.wChildView(0, "Products").wGroup(0).ExpandChildView(0, "OrderDetails")
  Grid.wChildView(0, "Products").wGroup(0).wChildView(0, "OrderDetails").ExpandGroup(0)
VBScript
Sub Main
  Dim  p, Grid
  ' Obtain the grid object
  Set p = Sys.Process("HierarchySample")
  p.WinFormsObject("Form1").Maximize
  Set Grid = p.WinFormsObject("Form1").WinFormsObject("groupingGrid1")
  ' Collapse items in the last row
  Grid.wChildView(7, "Products").CollapseGroup(3)
  Call Grid.CollapseChildView(7, "Products")
  Grid.Collapse(7)
  ' Expand 1st elements in the 1nd row
  Grid.Expand(0)
  Call Grid.ExpandChildView(0, "Products")
  Grid.wChildView(0, "Products").ExpandGroup(0)
  Grid.wChildView(0, "Products").wGroup(0).Expand(0)
  Call Grid.wChildView(0, "Products").wGroup(0).ExpandChildView(0, "OrderDetails")
  Grid.wChildView(0, "Products").wGroup(0).wChildView(0, "OrderDetails").ExpandGroup(0)
End Sub
DelphiScript
procedure Main;
var  p, Grid : OleVariant;
begin
  // Obtain the grid object
  p := Sys.Process('HierarchySample');
  p.WinFormsObject('Form1').Maximize;
  Grid := p.WinFormsObject('Form1').WinFormsObject('groupingGrid1');
  // Collapse items in the last row
  Grid.wChildView[7, 'Products'].CollapseGroup(3);
  Grid.CollapseChildView(7, 'Products');
  Grid.Collapse(7);
  // Expand 1st elements in the 1nd row
  Grid.Expand(0);
  Grid.ExpandChildView(0, 'Products');
  Grid.wChildView[0, 'Products'].ExpandGroup(0);
  Grid.wChildView[0, 'Products'].wGroup[0].Expand(0);
  Grid.wChildView[0, 'Products'].wGroup[0].ExpandChildView(0, 'OrderDetails');
  Grid.wChildView[0, 'Products'].wGroup[0].wChildView[0, 'OrderDetails'].ExpandGroup(0);
end;
C++Script, C#Script
function Main ()
{
  var  p, Grid;
  // Obtain the grid object
  p = Sys["Process"]("HierarchySample");
  p["WinFormsObject"]("Form1")["Maximize"]();
  Grid = p["WinFormsObject"]("Form1")["WinFormsObject"]("groupingGrid1");
  // Collapse items in the last row
  Grid["wChildView"](7, "Products")["CollapseGroup"](3);
  Grid["CollapseChildView"](7, "Products");
  Grid["Collapse"](7);
  // Expand 1st elements in the 1nd row
  Grid["Expand"](0);
  Grid["ExpandChildView"](0, "Products");
  Grid["wChildView"](0, "Products")["ExpandGroup"](0);
  Grid["wChildView"](0, "Products")["wGroup"](0)["Expand"](0);
  Grid["wChildView"](0, "Products")["wGroup"](0)["ExpandChildView"](0, "OrderDetails");
  Grid["wChildView"](0, "Products")["wGroup"](0)["wChildView"](0, "OrderDetails")["ExpandGroup"](0);
}
Using the GridGroupingControl Internal Methods
To expand and collapse all rows and groups in the grid at once, you can either create special functions that will recursively call the Expand and Collapse actions for all grid elements, or you can use the GridGroupingControl internal methods. These methods are listed in the table below:
| Method | Description | 
|---|---|
GridObj.Table.ExpandAllGroups() | 
Expands all groups in the grid. | 
GridObj.Table.CollapseAllGroups() | 
Collapses all groups in the grid. | 
GridObj.Table.ExpandAllRecords() | 
Expands all data rows, groups and child tables in the grid. | 
GridObj.Table.CollapseAllRecords() | 
Collapses all data rows, groups and child tables in the grid. | 
The following example contains the sample ExpandAll and CollapseAll routines that can be used to recursively expand or collapse all rows, groups and child tables in GridGroupingControl. The Grid parameter of these routines specify the GridGroupingControl control under test.
This example demonstrates how you can use these methods to expand/collapse all items in the GridGroupingControl grid.
JavaScript, JScript
function Main ()
{
  var  p, Grid;
  // Obtain the grid object
  p = Sys.Process("HierarchySample");
  p.WinFormsObject("Form1").Maximize();
  Grid = p.WinFormsObject("Form1").WinFormsObject("groupingGrid1");
  CollapseAll (Grid);
  aqUtils.Delay (1000);
  ExpandAll (Grid);
}
function ExpandAll (Grid)
{
  Grid.Table.ExpandAllRecords();
}
function CollapseAll (Grid)
{
  Grid.Table.CollapseAllRecords();
}
Python
def Main ():
  # Obtain the grid object
  p = Sys.Process("HierarchySample")
  p.WinFormsObject("Form1").Maximize()
  Grid = p.WinFormsObject("Form1").WinFormsObject("groupingGrid1")
  CollapseAll (Grid)
  aqUtils.Delay (1000)
  ExpandAll (Grid)
def ExpandAll (Grid):
  Grid.Table.ExpandAllRecords()
def CollapseAll (Grid):
  Grid.Table.CollapseAllRecords()
VBScript
Sub Main
  Dim  p, Grid
  ' Obtain the grid object
  Set p = Sys.Process("HierarchySample")
  p.WinFormsObject("Form1").Maximize
  Set Grid = p.WinFormsObject("Form1").WinFormsObject("groupingGrid1")
  CollapseAll Grid
  
  aqUtils.Delay 1000
  ExpandAll Grid
End Sub
Sub ExpandAll (Grid)
  Grid.Table.ExpandAllRecords
End Sub
Sub CollapseAll (Grid)
  Grid.Table.CollapseAllRecords
End Sub
DelphiScript
procedure ExpandAll (Grid);
begin
  Grid.Table.ExpandAllRecords;
end;
procedure CollapseAll (Grid);
begin
  Grid.Table.CollapseAllRecords;
end;
procedure Main;
var p, Grid : OleVariant;
begin
  // Obtain the grid object
  p := Sys.Process('HierarchySample');
  p.WinFormsObject('Form1').Maximize;
  Grid := p.WinFormsObject('Form1').WinFormsObject('groupingGrid1');
  CollapseAll (Grid);
  
  aqUtils.Delay (1000);
  ExpandAll (Grid);
end;
C++Script, C#Script
function Main ()
{
  var  p, Grid;
  // Obtain the grid object
  p = Sys["Process"]("HierarchySample");
  p.WinFormsObject("Form1").Maximize();
  Grid = p["WinFormsObject"]("Form1")["WinFormsObject"]("groupingGrid1");
  CollapseAll (Grid);
  aqUtils["Delay"] (1000);
  ExpandAll (Grid);
}
function ExpandAll (Grid)
{
  Grid["Table"]["ExpandAllRecords"]();
}
function CollapseAll (Grid)
{
  Grid["Table"]["CollapseAllRecords"]();
}
See Also
Working With Syncfusion GridGroupingControl
Collapse Action (Grid Controls)
CollapseChildView Action (Specific to SyncfusionEssGrid Controls)
CollapseGroup Action (Grid Controls)
Expand Action (Grid Controls)
ExpandChildView Action (Specific to SyncfusionEssGrid Controls)
ExpandGroup Action (Grid Controls)

Using the SyncfusionEssGrid.Expand and Collapse Actions