Programowe wybieranie wiersza w DataGridView


Odpowiedzi:


127

Nie testowane, ale myślę, że możesz wykonać następujące czynności:

dataGrid.Rows[index].Selected = true;

lub możesz wykonać następujące czynności (ale znowu: nie testowane):

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

Uważaj, jeśli Twój DataGridView jest read-only- to SelectedRows.Clear()nie będzie działać.
Derek W

14
Zamiast SelectedRows.Clear () użyj metody ClearSelection () instancji datagridview
Furkan

1
@Furkan: To nie robi tego samego. Gdy SelectedRows.Clear()tylko zaznaczone wiersze zostaną wyczyszczone, ale ClearSelection()także z kolumnami => zaznaczenia kolumn zostaną utracone ...
Christoph Fink

17
dodaj jedną linię kodudataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: zdarzenie SelectionChanged nie wydaje się być wyzwalane podczas testowania Twojej sugestii.
user2430797

34

W Visual Basic zrób to, aby wybrać wiersz w DataGridView; wybrany wiersz pojawi się z podświetlonym kolorem, ale zwróć uwagę, że pozycja kursora nie zmieni się:

Grid.Rows(0).Selected = True

Zrób to, aby zmienić położenie kursora:

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

Połączenie powyższych linii spowoduje umieszczenie kursora i wybranie wiersza. Oto standardowa procedura ustawiania ostrości i wybierania wiersza w DataGridView:

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

Grid.Rows (0) .Cells (0) jest bardzo przydatne w przypadku danych siatki dłuższych niż obszar wyświetlania siatki. Powyższa kolejność nie jest konieczna, możesz przesunąć kod do wyboru wiersza / komórki [źródło: osobiście przetestowane].
BiLaL

Jak przesunąć siatkę do wybranej pozycji? Wiersz jest zaznaczony, ale pozycja siatki nie jest w wybranym wierszu. Ręczne przewijanie pokazuje wybrany wiersz. Jak wymusić przewijanie siatki?
FrenkyB

Zobacz: FirstDisplayedScrollingRowIndex
Rodrigo T.

12
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. Wyczyść wszystkie poprzednie zaznaczenia.
  2. Zapętlaj wiersze, które należy wybrać w siatce.
  3. Pobierz uchwyty wierszy z siatki (uwaga tutaj siatka jest już zaktualizowana o nowe wiersze)
  4. Sprawdzanie, czy uchwyt wiersza jest prawidłowy, czy nie.
  5. Gdy prawidłowy uchwyt wiersza, wybierz go.

Gdzie itemList jest listą wierszy do wybrania w widoku siatki.




-1

Podczas ustawiania Selected wiersz DataGridView w czasie ładowania należy rozważyć obsługę tego w zdarzeniu DataBindingComplete, ponieważ może on zostać zastąpiony domyślnie.


-1

Spróbuj tego:

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

Mam nadzieję, że to pomoże!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.