When working with UltraGrid controls, you may need to simulate the selection of several grid cells, columns or rows and perform actions over the elements added to selection. This topic explains how to obtain values from the selected elements. To learn how to select grid cells and rows, see Selecting Cells in Infragistics UltraGrid and Selecting Multiple Rows in Infragistics UltraGrid topics.
To manage the selected elements, UltraGrid has a special collection that is accessible via the Selected property. The returned collection object,  in its turn, has the Rows, Columns and Cells properties that provide access to collections of selected rows, columns and cells. Note, that the objects in the collections are arranged according to the order in which they were selected. Each of those collections have a similar set of methods and properties that are intended to operate with the corresponding grid elements. 
The table below lists the most important properties and methods of the SelectedRowsCollection, SelectedColsCollection, SelectedCellsCollection collections.
| Property, Method | Description | 
|---|---|
Count | 
Read-only property. Returns the number of selected elements of a particular type. | 
Item | 
Read-only property. Returns an element with the specified index. | 
Add | 
Adds the specified element to the selection. | 
AddRange | 
Adds several elements to the selection. The elements are passed via an array. | 
Clear | 
Removes all elements from selection. | 
![]()  | 
In order for TestComplete to access these properties and methods, the .NET Application Support plugin must be installed and enabled. | 
Example
This example demonstrates how to obtain an array of selected rows and iterate through it to get the values of the desired cells. Some auxiliary routines of this example are located in other topics. You can find their descriptions and links to them in the expandable section below.
JavaScript, JScript
function GetSelectedRows(grid)
{
  var i, SelectedRows;
  SelectedRows = new Array (grid.Selected.Rows.Count);
  // Iterate through a collection of selected rows
  for (i = 0; i < grid.Selected.Rows.Count; i++)
    SelectedRows[i] = grid.Selected.Rows.Item(i);
  return SelectedRows;
}
function TestRowSelection()
{
  var Grid, SelRows, RowIdx, i;
  RowIdx=0;
  // Obtain the grid object
  Grid = Sys.Process("SamplesExplorer").WinFormsObject("frmEmptyRows").WinFormsObject("UltraGrid1");
  
  // Discard previously selected rows (if any)
  Grid.Selected.Rows.Clear;
  
  // Select several rows
  for (i=0; i<=2; i++) 
    if (SelectRow(Grid, null, RowIdx+i)) 
      Log.Message ("The row " + (RowIdx+i) + " was added to selection.")
    else
      Log.Message ("The row " + (RowIdx+i) + " cannot be added to selection.")
  // Get an array of selected rows
  SelRows = GetSelectedRows(Grid);
  for (i=0; i < SelRows.length; i++)
    Log.Message (GetCellValue(Grid, null, SelRows[i].Index, "Column 2"));
}
Python
def GetSelectedRows(grid):
  SelectedRows = list(grid.Selected.Rows.Count)
  # Iterate through a collection of selected rows
  for i in range(0, grid.Selected.Rows.Count-1):
    SelectedRows[i] = grid.Selected.Rows.Item[i]
  return SelectedRows
def TestRowSelection():
  RowIdx=0
  # Obtain the grid object
  Grid = Sys.Process("SamplesExplorer").WinFormsObject("frmEmptyRows").WinFormsObject("UltraGrid1")
  
  # Discard previously selected rows (if any)
  Grid.Selected.Rows.Clear
  
  # Select several rows
  for i in range(0, 2): 
    if (SelectRow(Grid, None, RowIdx+i)): 
      Log.Message ("The row " + (RowIdx+i) + " was added to selection.")
    else:
      Log.Message ("The row " + (RowIdx+i) + " cannot be added to selection.")
  # Get an array of selected rows
  SelRows = GetSelectedRows(Grid)
  for i in range(0, SelRows.length-1):
    Log.Message (GetCellValue(Grid, None, SelRows[i].Index, "Column 2"))
VBScript
Function GetSelectedRows(grid)
  SelectedRows = CreateVariantArray (0, Grid.Selected.Rows.Count - 1)
  ' Iterate through a collection of selected rows  
  For i = 0 To grid.Selected.Rows.Count - 1
    Set SelectedRows(i) = grid.Selected.Rows.Item(i)
  Next
  GetSelectedRows = SelectedRows
End Function
Sub TestRowSelection
Dim Grid, SelRows
  RowIdx=0
  ' Obtain the grid object
  Set Grid = Sys.Process("SamplesExplorer").WinFormsObject("frmEmptyRows").WinFormsObject("UltraGrid1")
  
  ' Discard previously selected rows (if any)
  Grid.Selected.Rows.Clear
  ' Select several rows
  For i=0 To 2  
    If SelectRow(Grid, Nothing, RowIdx+i) Then
      Log.Message ("The row " & CStr(RowIdx+i) & " was added to selection.")
    Else
      Log.Message ("The row " & CStr(RowIdx+i) & " cannot be added to selection.")
    End If
  Next
  ' Get an array of selected rows
  SelRows=GetSelectedRows(Grid) 
  For i = 0 To VarArrayHighBound(SelRows, 1)
    Log.Message (GetCellValue(Grid, Nothing, SelRows(i).Index, "Column 2"))
   Next
End Sub
DelphiScript
function GetSelectedRows(grid): Variant;
var SelectedRows, i : OleVariant;
begin
  SelectedRows := CreateVariantArray (0, grid.Selected.Rows.Count - 1);
  // Iterate through a collection of selected rows
  for i := 0 to grid.Selected.Rows.Count - 1 do
    SelectedRows[i] := grid.Selected.Rows.Item[i];
  Result := SelectedRows;
end;
function TestRowSelection;
var Grid, SelRows, i, RowIdx: OleVariant;
begin
  RowIdx:=0;
  // Obtain the grid object
  Grid := Sys.Process('SamplesExplorer').WinFormsObject('frmEmptyRows').WinFormsObject('UltraGrid1');
  // Discard previously selected rows (if any)
  Grid.Selected.Rows.Clear;
  // Select several rows
  for i:=0 to 2 do 
    if SelectRow (Grid, nil, RowIdx+i) then 
      Log.Message ('The row ' + aqConvert.IntToStr(RowIdx+i )+ ' was added to selection.')
    else
      Log.Message ('The row ' + aqConvert.IntToStr(RowIdx+i) + ' cannot be added to selection.');
  // Get an array of selected rows
  SelRows := GetSelectedRows(grid); 
  for i := 0 to VarArrayHighBound(SelRows, 1) do
    Log.Message (GetCellValue(grid, nil, SelRows[i].Index, 'Column 2'));
end;
C++Script, C#Script
function GetSelectedRows(grid)
{
  var i, SelectedRows;
  SelectedRows = new Array (grid["Selected"]["Rows"]["Count"]);
  // Iterate through a collection of selected rows
  for (i = 0; i < grid["Selected"]["Rows"]["Count"]; i++)
    SelectedRows[i] = grid["Selected"]["Rows"]["Item"](i);
  return SelectedRows;
}
function TestRowSelection()
{
  var Grid, SelRows, RowIdx, i;
  RowIdx=0;
  // Obtain the grid object
  Grid = Sys["Process"]("SamplesExplorer")["WinFormsObject"]("frmEmptyRows")["WinFormsObject"]("UltraGrid1");
  // Discard previously selected rows (if any)
  Grid["Selected"]["Rows"]["Clear"];
  // Select several rows
  for (i=0; i<=2; i++) 
    if (SelectRow(Grid, null, RowIdx+i)) 
      Log["Message"]("The row " + (RowIdx+i) + " was added to selection.")
    else
      Log["Message"]("The row " + (RowIdx+i) + " cannot be added to selection.")
  // Get an array of selected rows
  SelRows = GetSelectedRows(Grid);
  for (i=0; i < SelRows["length"]; i++)
    Log["Message"](GetCellValue(Grid, null, SelRows[i]["Index"], "Column 2"));
}
See Also
Working With Infragistics UltraGrid
Accessing Grid Elements in Infragistics UltraGrid
Selecting Multiple Rows in Infragistics UltraGrid
Expanding and Collapsing Rows in Infragistics UltraGrid
Obtaining and Setting Cell Values in Infragistics UltraGrid


View description