ColumnView.GetSelectedRows() Method
Returns handles of the selected rows (or cards).
Namespace: DevExpress.XtraGrid.Views.Base
Assembly: DevExpress.XtraGrid.v24.2.dll
Declaration
Returns
Type | Description |
---|---|
Int32[] | An array that contains handles that correspond to selected rows. |
Remarks
Use the ColumnView.SelectedRowsCount property to obtain the number of selected rows/cards.
The following example implements the GetSelectedDataRowsCount
method that returns the total number of selected data rows. If the GridView
is grouped, the GetSelectedDataRowsCount
method checks whether handles correspond to data or group rows (group row handles have a negative value: -1, -2, etc.):
int GetSelectedDataRowsCount(GridView view)
{
if (view.GroupCount == 0)
return view.GetSelectedRows().Length;
int selectedDataRowsCount = 0;
foreach (int rowHandle in view.GetSelectedRows())
{
if (rowHandle >= 0)
selectedDataRowsCount++;
}
return selectedDataRowsCount;
}
If multiple row selection is disabled (see ColumnViewOptionsSelection.MultiSelect), the GetSelectedRows
method returns an array with a single item that corresponds to the focused row handle. You can also use the View’s FocusedRowHandle property to obtain the focused row handle.
Read to the following topic for additional information: Multiple Row and Cell Selection.
Note
In Master-Detail Mode, Pattern Detail Views do not contain data and these views are never displayed within the grid. The GetSelectedRows
method must not be invoked for these Views.
The GetSelectedRows
method can be used only with Views (master or clone detail views) that display real data within the grid. Use the following methods to access these Views:
- GridControl.MainView — returns the top most View in a grid.
- GridControl.FocusedView — returns the focused View.
- GridControl.DefaultView — returns the currently maximized View.
- The
sender
parameter of View-specific events. - GridView.GetDetailView — returns a detail clone View for a specific master row.
Example
This example obtains selected rows and modifies their values in the “Discounted” column.
If 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. The example encloses the code within BaseView.BeginUpdate and BaseView.EndUpdate method calls to avoid excessive updates.
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.
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";
}
Related GitHub Examples
The following code snippets (auto-collected from DevExpress Examples) contain references to the GetSelectedRows() method.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.