In order to perform various actions over the GridGroupingControl control, you first need to locate the row that contains the data that you are going to work with. You may also need to find a certain record to make sure that data has been loaded into the grid correctly, and so on. This topic describes how you can search for records in the GridGroupingControl.
GridGroupingControl does not have built-in methods for searching in the grid, so you will need to implement the search algorithm yourself. A general search approach implies that you iterate through grid rows and on each iteration check whether the current row matches the search condition, for example, if it contains the sought-for value or has a specific set of options.
Note that the grid control may display the data with special formatting, so the actual value of a particular cell can be significantly different from the cell’s display text. The grid can also contain columns that use lookup combo boxes to display values different from the ones that are actually stored in the column cells. You should keep this in mind when specifying the sought-for values for your search procedure.
|  | 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 SyncfusionEssGridobject. 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  | 
The following example demonstrates how you can locate a grid row by its value in a particular column.
Example
JavaScript, JScript
function Main ()
{
  var p, Grid, ChildTable, RowIndex, SearchValue;
  // Obtain the grid object
  p = Sys.Process("EmployeeTerritoryOrder");
  Grid = p.WinFormsObject("Form1").WinFormsObject("gridGroupingControl1");
  ChildTable = Grid.wChildView (0, "Orders");
  // Locate a row
  SearchValue = 10400;
  RowIndex = FindRow (ChildTable, "OrderID", SearchValue);
  if (RowIndex != -1)
    ChildTable.ClickCell (RowIndex, "OrderID")
  else
    Log.Error ("Row with cell value " + SearchValue + " was not found.");
  // Locate a row by a complex value
  SearchValue = CreateDateTime (1996, 10, 29, 8, 0, 0);
  RowIndex = FindRow (ChildTable, "OrderDate", SearchValue);
  if (RowIndex != -1)
    ChildTable.ClickCell (RowIndex, "OrderDate")
  else
    Log.Error ("Row with cell value " + SearchValue.ToString().OleValue + " was not found.");
}
function FindRow (ViewOrGroup, ColumnId, Value)
{
  for (var i=0; i<ViewOrGroup.wRowCount; i++)
    if (ViewOrGroup.wValue(i, ColumnId).Equals(Value))
      return i;
  return -1;
}
function CreateDateTime (Year, Month, Day, Hour, Minute, Second)
{
  return Sys.Process("EmployeeTerritoryOrder").AppDomain("EmployeeTerritoryOrder.exe").dotNET.System.DateTime.zctor_5(Year, Month, Day, Hour, Minute, Second);
}
Python
def Main ():
  # Obtain the grid object
  p = Sys.Process("EmployeeTerritoryOrder")
  Grid = p.WinFormsObject("Form1").WinFormsObject("gridGroupingControl1")
  ChildTable = Grid.wChildView [0, "Orders"]
  # Locate a row
  SearchValue = 10400
  RowIndex = FindRow (ChildTable, "OrderID", SearchValue)
  if (RowIndex != -1):
    ChildTable.ClickCell (RowIndex, "OrderID")
  else:
    Log.Error ("Row with cell value " + SearchValue + " was not found.")
  # Locate a row by a complex value
  SearchValue = CreateDateTime (1996, 10, 29, 8, 0, 0)
  RowIndex = FindRow (ChildTable, "OrderDate", SearchValue)
  if (RowIndex != -1):
    ChildTable.ClickCell (RowIndex, "OrderDate")
  else:
    Log.Error ("Row with cell value " + SearchValue.ToString().OleValue + " was not found.")
def FindRow (ViewOrGroup, ColumnId, Value):
  for i in range(0, ViewOrGroup.wRowCount-1):
    if (ViewOrGroup.wValue[i, ColumnId].Equals(Value)):
      return i
  return -1
def CreateDateTime (Year, Month, Day, Hour, Minute, Second):
  return Sys.Process("EmployeeTerritoryOrder").AppDomain("EmployeeTerritoryOrder.exe").dotNET.System.DateTime.zctor_5(Year, Month, Day, Hour, Minute, Second)VBScript
Sub Main
  Dim p, Grid, ChildTable, RowIndex, SearchValue
  ' Obtain the grid object
  Set p = Sys.Process("EmployeeTerritoryOrder")
  Set Grid = p.WinFormsObject("Form1").WinFormsObject("gridGroupingControl1")
  Set ChildTable = Grid.wChildView (0, "Orders")
  ' Locate a row
  SearchValue = CLng(10400) ' Convert a 16-bit integer value to a 32-bit value
  RowIndex = FindRow (ChildTable, "OrderID", SearchValue)
  If RowIndex <> -1 Then
    Call ChildTable.ClickCell (RowIndex, "OrderID")
  Else
    Log.Error ("Row with cell value " & SearchValue & " was not found.")
  End If
  ' Locate a row by a complex value
  Set SearchValue = CreateDateTime (1996, 10, 29, 8, 0, 0)
  RowIndex = FindRow (ChildTable, "OrderDate", SearchValue)
  If RowIndex <> -1 Then
    Call ChildTable.ClickCell (RowIndex, "OrderDate")
  Else
    Log.Error ("Row with cell value " & SearchValue.ToString.OleValue & " was not found.")
  End If
End Sub
Function FindRow (ViewOrGroup, ColumnId, Value)
  Dim i
  For i = 0 To ViewOrGroup.wRowCount-1
    If ViewOrGroup.wValue(i, ColumnId).Equals(Value) Then
      FindRow = i
      Exit Function
    End If
  Next
  FindRow = -1
End Function
Function CreateDateTime (Year, Month, Day, Hour, Minute, Second)
  Set CreateDateTime = Sys.Process("EmployeeTerritoryOrder").AppDomain("EmployeeTerritoryOrder.exe").dotNET.System.DateTime.zctor_5(Year, Month, Day, Hour, Minute, Second)
End Function
DelphiScript
function FindRow (ViewOrGroup, ColumnId, Value); forward;
function CreateDateTime (Year, Month, Day, Hour, Minute, Second); forward;
procedure Main;
var p, Grid, ChildTable, RowIndex, SearchValue : OleVariant;
begin
  // Obtain the grid object
  p := Sys.Process('EmployeeTerritoryOrder');
  Grid := p.WinFormsObject('Form1').WinFormsObject('gridGroupingControl1');
  ChildTable := Grid.wChildView[0, 'Orders'];
  // Locate a row
  SearchValue := 10400;
  RowIndex := FindRow (ChildTable, 'OrderID', SearchValue);
  if RowIndex <> -1 then
    ChildTable.ClickCell (RowIndex, 'OrderID')
  else
    Log.Error ('Row with cell value ' + aqConvert.VarToStr(SearchValue) + ' was not found.');
  // Locate a row by a complex value
  SearchValue := CreateDateTime (1996, 10, 29, 8, 0, 0);
  RowIndex := FindRow (ChildTable, 'OrderDate', SearchValue);
  if RowIndex <> -1 then
    ChildTable.ClickCell (RowIndex, 'OrderDate')
  else
    Log.Error ('Row with cell value ' + SearchValue.ToString.OleValue + ' was not found.');
end;
function FindRow (ViewOrGroup, ColumnId, Value);
var i : OleVariant;
begin
  for i := 0 to ViewOrGroup.wRowCount-1 do
    if ViewOrGroup.wValue[i, ColumnId].Equals(Value) then
    begin
      Result := i;
      Exit;
    end;
  Result := -1;
end;
function CreateDateTime (Year, Month, Day, Hour, Minute, Second);
begin
  Result := Sys.Process('EmployeeTerritoryOrder').AppDomain('EmployeeTerritoryOrder.exe').dotNET.System.DateTime.zctor_5(Year, Month, Day, Hour, Minute, Second);
end;
C++Script, C#Script
function Main ()
{
  var p, Grid, ChildTable, RowIndex, SearchValue;
  // Obtain the grid object
  p = Sys["Process"]("EmployeeTerritoryOrder");
  Grid = p["WinFormsObject"]("Form1")["WinFormsObject"]("gridGroupingControl1");
  ChildTable = Grid["wChildView"](0, "Orders");
  // Locate a row
  SearchValue = 10400;
  RowIndex = FindRow (ChildTable, "OrderID", SearchValue);
  if (RowIndex != -1)
    ChildTable["ClickCell"](RowIndex, "OrderID")
  else
    Log["Error"]("Row with cell value " + SearchValue + " was not found.");
  // Locate a row by a complex value
  SearchValue = CreateDateTime (1996, 10, 29, 8, 0, 0);
  RowIndex = FindRow (ChildTable, "OrderDate", SearchValue);
  if (RowIndex != -1)
    ChildTable["ClickCell"](RowIndex, "OrderDate")
  else
    Log["Error"]("Row with cell value " + SearchValue["ToString"]()["OleValue"] + " was not found.");
}
function FindRow (ViewOrGroup, ColumnId, Value)
{
  for (var i=0; i<ViewOrGroup["wRowCount"]; i++)
    if (ViewOrGroup["wValue"](i, ColumnId)["Equals"](Value))
      return i;
  return -1;
}
function CreateDateTime (Year, Month, Day, Hour, Minute, Second)
{
  return Sys["Process"]("EmployeeTerritoryOrder")["AppDomain"]("EmployeeTerritoryOrder.exe")["dotNET"]["System"]["DateTime"]["zctor_5"](Year, Month, Day, Hour, Minute, Second);
}
See Also
Working With Syncfusion GridGroupingControl
Obtaining and Setting Cell Values in Syncfusion GridGroupingControl
Iterating Through Rows in Syncfusion GridGroupingControl

 View description
View description