The XtraGrid control can display data of multiple nested tables. The data of each child table as well as the parent table is displayed in a separate view. A view is an object that holds information about the data displayed in it, the number of rows and columns, appearance and behavior settings. Methods and properties of the DevExpressXtraGrid
object that is used to work with XtraGrid controls from TestComplete scripts, as well as many custom examples in this section require that you specify the view under which the operation is applied. This topic explains how you can access the XtraGrid’s views.
Accessing Views Using the DevExpressXtraGrid.wChildView Property
Accessing Views Using XtraGrid’s Internal Properties and Methods
To perform these actions, TestComplete should have access to internal objects, properties and methods of the XtraGrid control. For this purpose, the .NET Application Support and Developer Express Control Support plugins must be installed and enabled. The latter lets you work with the XtraGrid control using methods and properties of the DevExpressXtraGrid object. Without this plugin, you will not be able to work with XtraGrid controls using their internal methods and properties. |
When testing Developer Express XtraGrid controls, use specific methods and properties of the corresponding DevExpressXtraGrid
object. You can call these methods and properties from your keyword tests, as well as from scripts. This topic describes how to work with an object’s properties and methods from your scripts. However, when testing an XtraGrid control from your keyword test, you can use the same methods and properties calling them from keyword test operations. For more information, see Keyword Tests Basic Operations.
Accessing Views Using the DevExpressXtraGrid.wChildView Property
Methods and properties of the DevExpressXtraGrid
object let you work with data displayed in the top-level grid view. To access child views and work with child data, you can use the wChildView
property. This property returns the DevExpressXtraGridView
object that represents the specified child view. Similarly, you can access a grand-child view by using the wChildView
property applied to a child view object, and so on. The wChildViewCount
property lets you determine the number of child views for a particular grid row. You can use this property, for example, if you need to iterate through child views.
Note: | The XtraGrid control architecture only allows child views to exist when they are displayed in the grid, that is, when their parent rows are expanded. When you access a child view using the wChildView property, TestComplete automatically expands the view’s parent row and selects this view, so that you do not have to perform any additional actions to expand the parent row. |
Below is an example that illustrates how you can work with several grid views. It works with the GridMainDemo application that is shipped with the Developer Express XtraGrid Suite.
JavaScript, JScript
function Main ()
{
var p, frmMain, Grid;
// Obtain the application process and its main form
p = Sys.Process("GridMainDemo");
frmMain = p.WinFormsObject("frmMain");
// Select the "Inplace Editors" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2(1).SelectedLinkIndex = 0;
// Obtain the grid control
Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1");
// Enter new data into the grid
Grid.ClickCell(0, "Contact Name");
Grid.Keys ("^a[Del]" + "John Smith" + "[Enter]");
Grid.wChildView(0, "Products").ClickCell(0, "Product Name");
Grid.Keys ("^a[Del]" + "Ipoh Coffee" + "[Enter]");
Grid.wChildView(0, "Products").wChildView(0, "Order Details").ClickCell(0, "Quantity");
Grid.Keys ("^a[Del]" + "75" + "[Enter]");
}
Python
def Main ():
# Obtain the application process and its main form
p = Sys.Process("GridMainDemo")
frmMain = p.WinFormsObject("frmMain")
frmMain.Activate
# Select the "Master-Detail" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2[1].SelectedLinkIndex = 0
# Obtain the grid control
Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1")
# Enter new data into the grid
Grid.ClickCell(0, "Contact Name")
Grid.Keys ("^a[Del]" + "John Smith" + "[Enter]")
Grid.wChildView[0, "Products"].ClickCell(0, "Product Name")
Grid.Keys ("^a[Del]" + "Ipoh Coffee" + "[Enter]")
Grid.wChildView[0, "Products"].wChildView[0, "Order Details"].ClickCell(0, "Quantity")
Grid.Keys ("^a[Del]" + "75" + "[Enter]")
VBScript
Sub Main
Dim p, frmMain, Grid
' Obtain the application process and its main form
Set p = Sys.Process("GridMainDemo")
Set frmMain = p.WinFormsObject("frmMain")
frmMain.Activate
' Select the "Master-Detail" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2(1).SelectedLinkIndex = 0
' Obtain the grid control
Set Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1")
' Enter new data into the grid
Call Grid.ClickCell(0, "Contact Name")
Grid.Keys ("^a[Del]" & "John Smith" & "[Enter]")
Call Grid.wChildView(0, "Products").ClickCell(0, "Product Name")
Grid.Keys ("^a[Del]" & "Ipoh Coffee" & "[Enter]")
Call Grid.wChildView(0, "Products").wChildView(0, "Order Details").ClickCell(0, "Quantity")
Grid.Keys ("^a[Del]" & "75" & "[Enter]")
End Sub
DelphiScript
procedure Main;
var p, frmMain, Grid : OleVariant;
begin
// Obtain the application process and its main form
p := Sys.Process('GridMainDemo');
frmMain := p.WinFormsObject('frmMain');
frmMain.Activate;
// Select the "Master-Detail" demo
frmMain.WinFormsObject('gcNavigations').WinFormsObject('navBarControl1').Groups.Item_2[1].SelectedLinkIndex := 0;
// Obtain the grid control
Grid := frmMain.WinFormsObject('panelControl1').WinFormsObject('gcContainer').WinFormsObject('MasterDetail').WinFormsObject('gridControl1');
// Enter new data into the grid
Grid.ClickCell(0, 'Contact Name');
Grid.Keys ('^a[Del]' + 'John Smith' + '[Enter]');
Grid.wChildView[0, 'Products'].ClickCell(0, 'Product Name');
Grid.Keys ('^a[Del]' + 'Ipoh Coffee' + '[Enter]');
Grid.wChildView[0, 'Products'].wChildView[0, 'Order Details'].ClickCell(0, 'Quantity');
Grid.Keys ('^a[Del]' + '75' + '[Enter]');
end;
C++Script, C#Script
function Main ()
{
var p, frmMain, Grid;
// Obtain the application process and its main form
p = Sys["Process"]("GridMainDemo");
frmMain = p["WinFormsObject"]("frmMain");
// Select the "IMaster-Detail" demo
frmMain["WinFormsObject"]("gcNavigations")["WinFormsObject"]("navBarControl1")["Groups"]["Item_2"](1)["SelectedLinkIndex"] = 0;
// Obtain the grid control
Grid = frmMain["WinFormsObject"]("panelControl1")["WinFormsObject"]("gcContainer")["WinFormsObject"]("MasterDetail")["WinFormsObject"]("gridControl1");
// Enter new data into the grid
Grid["ClickCell"](0, "Contact Name");
Grid["Keys"]("^a[Del]" + "John Smith" + "[Enter]");
Grid["wChildView"](0, "Products")["ClickCell"](0, "Product Name");
Grid["Keys"]("^a[Del]" + "Ipoh Coffee" + "[Enter]");
Grid["wChildView"](0, "Products")["wChildView"](0, "Order Details")["ClickCell"](0, "Quantity");
Grid["Keys"]("^a[Del]" + "75" + "[Enter]");
}
Accessing Views Using XtraGrid’s Internal Properties and Methods
Sometimes you may need to get “native” .NET objects that represent a particular grid view. For example, you may want to perform specific actions or checks using internal methods and properties of the XtraGrid control.
The XtraGrid control provides special properties that let you quickly access specific views:
MainView
provides access to the topmost grid view.FocusedView
provides access to the currently focused view. You can use this property, for example, to determine or set the focused view in a grid that displays data of multiple nested tables.DefaultView
returns the currently maximized grid view (it can be eitherMainView
or a child view).
If the grid displays data of one table only, the FocusedView
and DefaultView
properties return the same view as the MainView
property.
The following code snippet demonstrates how you can obtain the number of rows and columns in a currently focused grid view:
JavaScript, JScript
function Test ()
{
var Grid, View;
// Obtain the grid object
...
// Obtain the currently focused grid view
View = Grid.FocusedView;
Log.Message ("The grid has " + View.RowCount + " rows and " + View.Columns.Count + " columns.");
}
Python
def Test ():
# Obtain the grid object
...
# Obtain the currently focused grid view
View = Grid.FocusedView
Log.Message ("The grid has " + View.RowCount + " rows and " + View.Columns.Count + " columns.")
VBScript
Sub Test
Dim Grid, View
' Obtain the grid object
...
' Obtain the currently focused grid view
Set View = Grid.FocusedView
Call Log.Message ("The grid has " & View.RowCount & " rows and " & View.Columns.Count & " columns.")
End Sub
DelphiScript
procedure Test;
var Grid, View : OleVariant;
begin
// Obtain the grid object
...
// Obtain the currently focused grid view
View := Grid.FocusedView;
Log.Message ('The grid has ' + aqConvert.VarToStr(View.RowCount) + ' rows and ' + aqConvert.VarToStr(View.Columns.Count) + ' columns.');
end;
C++Script, C#Script
function Test ()
{
var Grid, View;
// Obtain the grid object
...
// Obtain the currently focused grid view
View = Grid["FocusedView"];
Log["Message"]("The grid has " + View["RowCount"] + " rows and " + View["Columns"]["Count"] + " columns.");
}
If the grid displays hierarchical data, you will need to work with the data displayed in the top-level view as well as in its child views. To obtain a “native” child view object, you need to create a script that performs the following actions:
- Expands the view’s parent row. This is needed, because child views in the XtraGrid control only exist when they are displayed in the grid. To learn how you can expand XtraGrid rows, see Expanding and Collapsing Rows in Developer Express XtraGrid.
- Selects the desired child view, among child views of its parent row. Due to the above-mentioned specific, if the row has several child views, you need to switch to the desired child view in order to be able to access it. You can select a child view by its index (zero-based) using the following
SetMasterRowExpandedEx
method of the parent view object:viewObj.SetMasterRowExpandedEx(RowIndex, ChildViewIndex, true) - Obtains the desired child view. For this purpose, use the
GetVisibleDetailView
method of the parent view object. It returns the currently displayed child view for the specified row:viewObj.GetVisibleDetailView(RowIndex)
Below is an example that demonstrates how you can access and work with views in the XtraGrid control using its internal properties and methods.
Example
JavaScript
function Main ()
{
var p, frmMain, Grid, ChildView;
// Obtain the application process and its main form
p = Sys.Process("GridMainDemo");
frmMain = p.WinFormsObject("frmMain");
frmMain.Maximize();
// Select the "Master-Detail" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2(1).SelectedLinkIndex = 0;
// Obtain the grid control
Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1");
// Simulate actions in the top-level view
SelectCell (Grid, null, 0, "Contact Name");
Grid.Keys ("[F2]" + "John Smith" + "[Enter]");
// Simulate actions in the "Products" child view
ChildView = GetChildView (Grid, null, 0, 1);
SelectCell (Grid, ChildView, 0, "Product Name");
Grid.Keys ("[F2]" + "Ipoh Coffee" + "[Enter]");
// Simulate actions in the "Order Details" child view
ChildView = GetChildView (Grid, ChildView, 0, 0);
SelectCell (Grid, ChildView, 0, "Quantity");
Grid.Keys ("[F2]" + "75" + "[Enter]");
}
function GetChildView (Grid, ParentView, RowIndex, ChildViewIndex)
{
if (strictEqual(ParentView, null))
ParentView = Grid.MainView;
// Make the child view visible
ParentView.SetMasterRowExpandedEx (RowIndex, ChildViewIndex, true);
// Obtain the view object and return it
return ParentView.GetVisibleDetailView(RowIndex);
}
function SelectCell (Grid, View, RowIndex, ColumnId)
{
// Get the grid view object, if it is not specified
if (isNull(View))
View = Grid.MainView;
// Set the focused view
Grid.FocusedView = View;
// Change the row and column focus
View.FocusedRowHandle = RowIndex;
View.FocusedColumn = GetColumn (Grid, View, ColumnId);
}
function GetColumn (Grid, View, ColumnId)
{
var Columns, Col;
// Get the grid view object, if it is not specified
if (isNull(View))
View = Grid.MainView;
Columns = View.Columns;
// Check if the column is specified by caption or index
if (equal(aqObject.GetVarType (ColumnId), varOleStr))
{
// Search for the column by its caption
for (let i=0; i<Columns.Count; i++)
{
Col = Columns.Item_2(i);
if (equal(Col.Caption.OleValue, ColumnId))
return Col; // The column is found
}
return null; // The column is not found
}
else
// The column is specified by index
return Columns.Item_2(ColumnId);
}
JScript
function Main ()
{
var p, frmMain, Grid, ChildView;
// Obtain the application process and its main form
p = Sys.Process("GridMainDemo");
frmMain = p.WinFormsObject("frmMain");
frmMain.Maximize();
// Select the "Master-Detail" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2(1).SelectedLinkIndex = 0;
// Obtain the grid control
Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1");
// Simulate actions in the top-level view
SelectCell (Grid, null, 0, "Contact Name");
Grid.Keys ("[F2]" + "John Smith" + "[Enter]");
// Simulate actions in the "Products" child view
ChildView = GetChildView (Grid, null, 0, 1);
SelectCell (Grid, ChildView, 0, "Product Name");
Grid.Keys ("[F2]" + "Ipoh Coffee" + "[Enter]");
// Simulate actions in the "Order Details" child view
ChildView = GetChildView (Grid, ChildView, 0, 0);
SelectCell (Grid, ChildView, 0, "Quantity");
Grid.Keys ("[F2]" + "75" + "[Enter]");
}
function GetChildView (Grid, ParentView, RowIndex, ChildViewIndex)
{
if (ParentView == null)
ParentView = Grid.MainView;
// Make the child view visible
ParentView.SetMasterRowExpandedEx (RowIndex, ChildViewIndex, true);
// Obtain the view object and return it
return ParentView.GetVisibleDetailView(RowIndex);
}
function SelectCell (Grid, View, RowIndex, ColumnId)
{
// Get the grid view object, if it is not specified
if (View == null)
View = Grid.MainView;
// Set the focused view
Grid.FocusedView = View;
// Change the row and column focus
View.FocusedRowHandle = RowIndex;
View.FocusedColumn = GetColumn (Grid, View, ColumnId);
}
function GetColumn (Grid, View, ColumnId)
{
var Columns, Col, i;
// Get the grid view object, if it is not specified
if (View == null)
View = Grid.MainView;
Columns = View.Columns;
// Check if the column is specified by caption or index
if (aqObject.GetVarType (ColumnId) == varOleStr)
{
// Search for the column by its caption
for (i=0; i<Columns.Count; i++)
{
Col = Columns.Item_2(i);
if (Col.Caption.OleValue == ColumnId)
return Col; // The column is found
}
return null; // The column is not found
}
else
// The column is specified by index
return Columns.Item_2(ColumnId);
}
Python
def Main ():
# Obtain the application process and its main form
p = Sys.Process("GridMainDemo")
frmMain = p.WinFormsObject("frmMain")
frmMain.Maximize()
# Select the "Master-Detail" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2[1].SelectedLinkIndex = 0
# Obtain the grid control
Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1")
# Simulate actions in the top-level view
SelectCell (Grid, None, 0, "Contact Name")
Grid.Keys ("[F2]" + "John Smith" + "[Enter]")
# Simulate actions in the "Products" child view
ChildView = GetChildView (Grid, None, 0, 1)
SelectCell (Grid, ChildView, 0, "Product Name")
Grid.Keys ("[F2]" + "Ipoh Coffee" + "[Enter]")
# Simulate actions in the "Order Details" child view
ChildView = GetChildView (Grid, ChildView, 0, 0)
SelectCell (Grid, ChildView, 0, "Quantity")
Grid.Keys ("[F2]" + "75" + "[Enter]")
def GetChildView (Grid, ParentView, RowIndex, ChildViewIndex):
if ParentView == None:
ParentView = Grid.MainView
# Make the child view visible
ParentView.SetMasterRowExpandedEx (RowIndex, ChildViewIndex, True)
# Obtain the view object and return it
return ParentView.GetVisibleDetailView(RowIndex)
def SelectCell (Grid, View, RowIndex, ColumnId):
# Get the grid view object, if it is not specified
if (View == None):
View = Grid.MainView
# Set the focused view
Grid.FocusedView = View
# Change the row and column focus
View.FocusedRowHandle = RowIndex
View.FocusedColumn = GetColumn (Grid, View, ColumnId)
def GetColumn (Grid, View, ColumnId):
# Get the grid view object, if it is not specified
if (View == None):
View = Grid.MainView
Columns = View.Columns
# Check if the column is specified by caption or index
if (aqObject.GetVarType (ColumnId) == varOleStr):
# Search for the column by its caption
for i in range(0, Columns.Count-1):
Col = Columns.Item_2[i]
if (Col.Caption.OleValue == ColumnId):
return Col # The column is found
return None # The column is not found
else:
# The column is specified by index
return Columns.Item_2[ColumnId]
VBScript
Sub Main
Dim p, frmMain, Grid, ChildView
' Obtain the application process and its main form
Set p = Sys.Process("GridMainDemo")
Set frmMain = p.WinFormsObject("frmMain")
frmMain.Maximize
' Select the "Master-Detail" demo
frmMain.WinFormsObject("gcNavigations").WinFormsObject("navBarControl1").Groups.Item_2(1).SelectedLinkIndex = 0
' Obtain the grid control
Set Grid = frmMain.WinFormsObject("panelControl1").WinFormsObject("gcContainer").WinFormsObject("MasterDetail").WinFormsObject("gridControl1")
' Simulate actions in the top-level view
Call SelectCell (Grid, Nothing, 0, "Contact Name")
Grid.Keys ("[F2]" & "John Smith" & "[Enter]")
' Simulate actions in the "Products" child view
Set ChildView = GetChildView (Grid, Nothing, 0, 1)
Call SelectCell (Grid, ChildView, 0, "Product Name")
Grid.Keys ("[F2]" & "Ipoh Coffee" & "[Enter]")
' Simulate actions in the "Order Details" child view
Set ChildView = GetChildView (Grid, ChildView, 0, 0)
Call SelectCell (Grid, ChildView, 0, "Quantity")
Grid.Keys ("[F2]" & "75" & "[Enter]")
End Sub
Function GetChildView (Grid, ParentView, RowIndex, ChildViewIndex)
If ParentView Is Nothing Then
Set ParentView = Grid.MainView
End If
' Make the child view visible
Call ParentView.SetMasterRowExpandedEx (RowIndex, ChildViewIndex, True)
' Obtain the view object and return it
Set GetChildView = ParentView.GetVisibleDetailView(RowIndex)
End Function
Sub SelectCell (Grid, View, RowIndex, ColumnId)
' Get the grid view object, if it is not specified
If View Is Nothing Then
Set View = Grid.MainView
End If
' Set the focused view
Set Grid.FocusedView = View
' Change the row and column focus
View.FocusedRowHandle = RowIndex
Set View.FocusedColumn = GetColumn (Grid, View, ColumnId)
End Sub
Function GetColumn (Grid, View, ColumnId)
Dim Columns, Col, i
' Get the grid view object, if it is not specified
If View Is Nothing Then
Set View = Grid.MainView
End If
Set Columns = View.Columns
' Check if the column is specified by caption or index
If aqObject.GetVarType(ColumnId) = varOleStr Then
' Search for the column by its caption
For i = 0 To Columns.Count-1
Set Col = Columns.Item_2(i)
If Col.Caption.OleValue = ColumnId Then
Set GetColumn = Col ' The column is found
Exit Function
End If
Next
Set GetColumn = Nothing' The column is not found
Else
' The column is specified by index
Set GetColumn = Columns.Item_2(ColumnId)
End If
End Function
DelphiScript
function GetChildView (Grid, ParentView, RowIndex, ChildViewIndex); forward;
procedure SelectCell (Grid, View, RowIndex, ColumnId); forward;
function GetColumn (Grid, View, ColumnId); forward;
procedure Main;
var p, frmMain, Grid, ChildView: OleVariant;
begin
// Obtain the application process and its main form
p := Sys.Process('GridMainDemo');
frmMain := p.WinFormsObject('frmMain');
frmMain.Maximize;
// Select the ;Master-Detail; demo
frmMain.WinFormsObject('gcNavigations').WinFormsObject('navBarControl1').Groups.Item_2[1].SelectedLinkIndex := 0;
// Obtain the grid control
Grid := frmMain.WinFormsObject('panelControl1').WinFormsObject('gcContainer').WinFormsObject('MasterDetail').WinFormsObject('gridControl1');
// Simulate actions in the top-level view
SelectCell (Grid, nil, 0, 'Contact Name');
Grid.Keys ('[F2]' + 'John Smith' + '[Enter]');
// Simulate actions in the 'Products' child view
ChildView := GetChildView (Grid, nil, 0, 1);
SelectCell (Grid, ChildView, 0, 'Product Name');
Grid.Keys ('[F2]' + 'Ipoh Coffee' + '[Enter]');
// Simulate actions in the 'Order Details' child view
ChildView := GetChildView (Grid, ChildView, 0, 0);
SelectCell (Grid, ChildView, 0, 'Quantity');
Grid.Keys ('[F2]' + '75' + '[Enter]');
end;
function GetChildView (Grid, ParentView, RowIndex, ChildViewIndex);
begin
if ParentView = nil then
ParentView := Grid.MainView;
// Make the child view visible
ParentView.SetMasterRowExpandedEx (RowIndex, ChildViewIndex, true);
// Obtain the view object and return it
Result := ParentView.GetVisibleDetailView(RowIndex);
end;
procedure SelectCell (Grid, View, RowIndex, ColumnId);
begin
// Get the grid view object, if it is not specified
if View = nil then
View := Grid.MainView;
// Set the focused view
Grid.FocusedView := View;
// Change the row and column focus
View.FocusedRowHandle := RowIndex;
View.FocusedColumn := GetColumn (Grid, View, ColumnId);
end;
function GetColumn (Grid, View, ColumnId);
var Columns, Col, i : OleVariant;
begin
// Get the grid view object, if it is not specified
if View = nil then
View := Grid.MainView;
Columns := View.Columns;
// Check if the column is specified by caption or index
if aqObject.GetVarType (ColumnId) = varOleStr then
begin
// Search for the column by its caption
for i := 0 to Columns.Count-1 do
begin
Col := Columns.Item_2[i];
if Col.Caption.OleValue = ColumnId then
begin
Result := Col; // The column is found
Exit
end
end;
Result := nil; // The column is not found
end
else
// The column is specified by index
Result := Columns.Item_2[ColumnId];
end;
C++Script, C#Script
function Main ()
{
var p, frmMain, Grid, ChildView;
// Obtain the application process and its main form
p = Sys["Process"]("GridMainDemo");
frmMain = p["WinFormsObject"]("frmMain");
frmMain["Maximize"]();
// Select the "Master-Detail" demo
frmMain["WinFormsObject"]("gcNavigations")["WinFormsObject"]("navBarControl1")["Groups"]["Item_2"](1)["SelectedLinkIndex"] = 0;
// Obtain the grid control
Grid = frmMain["WinFormsObject"]("panelControl1")["WinFormsObject"]("gcContainer")["WinFormsObject"]("MasterDetail")["WinFormsObject"]("gridControl1");
// Simulate actions in the top-level view
SelectCell (Grid, null, 0, "Contact Name");
Grid["Keys"]("[F2]" + "John Smith" + "[Enter]");
// Simulate actions in the "Products" child view
ChildView = GetChildView (Grid, null, 0, 1);
SelectCell (Grid, ChildView, 0, "Product Name");
Grid["Keys"]("[F2]" + "Ipoh Coffee" + "[Enter]");
// Simulate actions in the "Order Details" child view
ChildView = GetChildView (Grid, ChildView, 0, 0);
SelectCell (Grid, ChildView, 0, "Quantity");
Grid["Keys"]("[F2]" + "75" + "[Enter]");
}
function GetChildView (Grid, ParentView, RowIndex, ChildViewIndex)
{
if (ParentView == null)
ParentView = Grid["MainView"];
// Make the child view visible
ParentView["SetMasterRowExpandedEx"](RowIndex, ChildViewIndex, true);
// Obtain the view object and return it
return ParentView["GetVisibleDetailView"](RowIndex);
}
function SelectCell (Grid, View, RowIndex, ColumnId)
{
// Get the grid view object, if it is not specified
if (View == null)
View = Grid["MainView"];
// Set the focused view
Grid["FocusedView"] = View;
// Change the row and column focus
View["FocusedRowHandle"] = RowIndex;
View["FocusedColumn"] = GetColumn (Grid, View, ColumnId);
}
function GetColumn (Grid, View, ColumnId)
{
var Columns, Col, i;
// Get the grid view object, if it is not specified
if (View == null)
View = Grid["MainView"];
Columns = View["Columns"];
// Check if the column is specified by caption or index
if (aqObject["GetVarType"](ColumnId) == varOleStr)
{
// Search for the column by its caption
for (i=0; i<Columns["Count"]; i++)
{
Col = Columns["Item_2"](i);
if (Col["Caption"]["OleValue"] == ColumnId)
return Col; // The column is found
}
return null; // The column is not found
}
else
// The column is specified by index
return Columns["Item_2"](ColumnId);
}
See Also
Working With Developer Express XtraGrid
wChildView Property (Grid Controls)
wChildViewCount Property (Grid Controls)
Expanding and Collapsing Rows in Developer Express XtraGrid