Программный выбор строки в DataGridView


Ответы:


129

Не проверял, но думаю, вы можете сделать следующее:

dataGrid.Rows[index].Selected = true;

или вы можете сделать следующее (но опять же: не проверено):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

Остерегайтесь, если у вас есть DataGridView read-only- тогда SelectedRows.Clear()работать не будет.
Derek W

14
Вместо SelectedRows.Clear () используйте метод ClearSelection () экземпляра datagridview
Фуркан

1
@Furkan: Это не то же самое. Очищаются SelectedRows.Clear()только выбранные строки, но ClearSelection()также и столбцы => выбор столбцов теряется ...
Кристоф Финк

17
добавьте одну строчку кодаdataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: событие SelectionChanged, похоже, не запускается при проверке вашего предложения.
user2430797

34

В Visual Basic сделайте это, чтобы выбрать строку в DataGridView; выбранная строка будет выделена цветом, но обратите внимание, что позиция курсора не изменится:

Grid.Rows(0).Selected = True

Сделайте это, измените положение курсора:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

Объединение строк выше поместит курсор и выберет строку. Это стандартная процедура для фокусировки и выбора строки в DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) .Cells (0) очень полезен в случае, если данные сетки длиннее, чем область отображения сетки. Упомянутый выше порядок не является обязательным, вы можете смахнуть код для выбора строки / ячейки [источник: лично протестировано].
BiLaL

Как переместить сетку в выбранное место? Строка выбрана, но позиция сетки не в выбранной строке. При прокрутке вручную отображается выбранная строка. Как заставить сетку прокручиваться?
FrenkyB

1
Смотрите, что: FirstDisplayedScrollingRowIndex
Родриго Т.

13
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. Очистить весь предыдущий выбор.
  2. Прокрутите строки, которые необходимо выбрать в вашей сетке.
  3. Получите их дескрипторы строк из сетки (обратите внимание, что сетка уже обновлена ​​новыми строками)
  4. Проверка допустимости дескриптора строки.
  5. Когда действительный дескриптор строки, выберите его.

Где itemList - это список строк, которые нужно выбрать в представлении сетки.




-1

При установке выбранной строки DataGridView во время загрузки рассмотрите возможность обработки этого в событии DataBindingComplete, поскольку по умолчанию она может быть перезаписана.


-1

Попробуй это:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

Надеюсь на эту помощь!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.