ColumnView.GetSelectedRows() Method

Returns the handles of the selected rows or cards. Multiple rows can be selected when the ColumnViewOptionsSelection.MultiSelect option is set to true.

Namespace: DevExpress.XtraGrid.Views.Base

Assembly: DevExpress.XtraGrid.v20.1.dll

Declaration

public virtual int[] GetSelectedRows()
Public Overridable Function GetSelectedRows As Integer()

Returns

Type Description
Int32[]

An array of integer values representing the handles of the selected rows or cards. An empty array if no rows are selected.

Remarks

To return the total number of selected rows use the ColumnView.SelectedRowsCount property instead.

When multiple selection is disabled, the GetSelectedRows method returns a single-item array with the focused row handle. You can also use the ColumnView.FocusedRowHandle property to retrieve this handle.

Refer to the Multiple Row and Cell Selection document for more information.

NOTE

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

Example

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 that reason you cannot access selected rows by their handles and process these rows right away. Instead, pass row handles retrieved by 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)
        rows.Add(gridView1.GetDataRow(selectedRowHandle));
}
try {
    gridView1.BeginUpdate();
    for (int i = 0; i < rows.Count; i++) {
        DataRow row = rows[i] as DataRow;
        // Change the field value.
        row["Discontinued"] = true;
    }
}
finally {
    gridView1.EndUpdate();
}

Example

The following code shows how to select rows that contain "Mexico" in the Country column and copy data from these rows.

ColumnView.SelectRow-example.png

using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;

ColumnView view = gridControl1.MainView as ColumnView;
GridColumn colCountry = view.Columns["Country"];
GridColumn colCompany = view.Columns["CompanyName"];
if (colCountry == null || colCompany == null) return;

// Enable multiple row selection mode.
view.OptionsSelection.MultiSelect = true;
view.ClearSelection();
int rowHandle = -1;
// Select rows that contain 'Mexico' in the Country column.
while (rowHandle != GridControl.InvalidRowHandle) {
    rowHandle = view.LocateByDisplayText(rowHandle + 1, colCountry, "Mexico");
    view.SelectRow(rowHandle);
}
int[] selectedRowHandles = view.GetSelectedRows();
if (selectedRowHandles.Length > 0) {
    // Move focus to the first selected row.
    view.FocusedRowHandle = selectedRowHandles[0];
    // Copy the selection to the clipboard
    view.CopyToClipboard();
    // Copy the selected company names to a Memo editor.
    memoEdit1.Text = "";
    for (int i = 0; i < selectedRowHandles.Length; i++)
        memoEdit1.Text += view.GetRowCellDisplayText(selectedRowHandles[i], colCompany) + "\r\n";
}
See Also