Skip to main content

ColumnView.GetDataRow(Int32) Method

Returns a DataRow in the bound DataTable that contains data for the specified grid row.

Namespace: DevExpress.XtraGrid.Views.Base

Assembly: DevExpress.XtraGrid.v22.2.dll

NuGet Package: DevExpress.Win.Grid


public virtual DataRow GetDataRow(
    int rowHandle


Name Type Description
rowHandle Int32

An integer value that specifies a grid row’s handle. Note that grid rows and their handles are not equal to data rows and their indexes in the bound data source.


Type Description

A DataRow object representing the specified row.


Use the following methods to get an object that contains data for a specific node:

  • GetRow(Int32) — Returns an Object in the bound data source that contains data for the specified grid row.

    To get the focused grid row’s data row, use the GetFocusedRow() method.

  • GetDataRow(Int32) — Returns a DataRow in the bound DataTable that contains data for the specified grid row.

    To get the focused grid row’s DataRow, use the GetFocusedDataRow() method.


    If the bound data source is a custom collection, these methods return null (Nothing in VB).

To specify the row in the method’s parameter, use the row’s handle.

For a group row, these methods return the first grid row’s underlying data row.


Detail pattern Views do not contain data and they are never displayed within XtraGrid. So, the GetDataRow member must not be invoked for these Views. The GetDataRow member can only be used with Views that display real data within the Grid Control. Use the following methods to access these Views with which an end user interacts at runtime.


This example demonstrates how to obtain selected rows, and then change values of their “Discounted” column cells.

If Grid data is sorted or filtered, changes made to one Grid row can make other rows change their order and, as a result, their row handles. For this reason, you cannot access selected rows by their handles and process these rows right away. Instead, pass row handles retrieved by the ColumnView.GetSelectedRows method to the ColumnView.GetDataRow method. This allows you to access underlying data source objects (in this example, DataRows), save them to an array, and safely change their values afterwards.

Each row modification forces the Grid View to update itself. Enclose your code with the BaseView.BeginUpdate and BaseView.EndUpdate method calls to avoid excessive updates. Refer to the Batch Modifications Overview document for details.

ArrayList rows = new ArrayList();

// Add the selected rows to the list.
Int32[] selectedRowHandles = gridView1.GetSelectedRows();
for (int i = 0; i < selectedRowHandles.Length; i++) {
    int selectedRowHandle = selectedRowHandles[i];
    if (selectedRowHandle >= 0)
try {
    for (int i = 0; i < rows.Count; i++) {
        DataRow row = rows[i] as DataRow;
        // Change the field value.
        row["Discontinued"] = true;
finally {
See Also