DataGridView'da programlı olarak bir satır seçme


110

Çalışma DataGridViewzamanında programlı olarak belirli bir satır aralığını nasıl seçebilirim ?

Yanıtlar:


129

Test edilmedi, ancak aşağıdakileri yapabileceğinizi düşünüyorum:

dataGrid.Rows[index].Selected = true;

veya aşağıdakileri yapabilirsiniz (ancak yine: test edilmemiştir):

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

Senin DataGridView ise dikkat read-onlysonra - SelectedRows.Clear()çalışmaz.
Derek W

14
SelectedRows.Clear () yerine datagridview örneğinin ClearSelection () yöntemini kullanın
Furkan

1
@Furkan: Bu aynı şeyi yapmıyor. İle SelectedRows.Clear()yalnızca seçilen satırlar silinir, fakat ClearSelection()aynı zamanda sütunların => sütun seçimleri ... kaybolur
Christoph Fink

17
bir kod satırı ekleyindataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Zamansız

2
@Timeless: Öneriniz test edilirken SelectionChanged olayı tetiklenmiyor.
user2430797

34

Visual Basic'te, bir satırda bir satır seçmek için bunu yapın DataGridView; seçilen satır vurgulanmış bir renkle görünecektir, ancak imleç konumunun değişmeyeceğini unutmayın:

Grid.Rows(0).Selected = True

Bu, imlecin konumunu değiştirir mi:

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

Yukarıdaki satırları birleştirmek, imleci konumlandıracak ve bir satır seçecektir. Bu, bir satıra odaklanmak ve seçmek için standart prosedürdür DataGridView:

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

Grid.Rows (0) .Cells (0), ızgara görüntüleme alanından daha uzun ızgara verileri olması durumunda çok kullanışlıdır. Yukarıda belirtilen sıra gerekli değildir, satır / hücre seçimi için kodu kaydırabilirsiniz [kaynak: Kişisel Olarak Test Edildi].
BiLaL

Izgarayı seçilen konuma nasıl taşıyabilirim? Satır seçildi, ancak ızgara konumu seçili satırda değil. Manuel olarak kaydırmak, seçilen satırı gösterir. Izgarayı kaydırmaya nasıl zorlayabilirim?
FrenkyB

1
Şunu görün: FirstDisplayedScrollingRowIndex
Rodrigo T.

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. Önceki tüm seçimi temizle.
  2. Izgaranızda seçilmesi gereken satırlar arasında döngü yapın.
  3. Satır tutamaçlarını ızgaradan alın (Buraya dikkat edin ızgara zaten yeni satırlarla güncellenmiştir)
  4. Satır tutamacının geçerli olup olmadığını kontrol etme.
  5. Geçerli satır tutamacı olduğunda onu seçin.

ÖğeListesi, ızgara görünümünde seçilecek satırların listesidir.




-1

Yükleme zamanında bir DataGridView Seçili satırını ayarlarken, varsayılan olarak üzerine yazılabileceği için DataBindingComplete olayında bunu işlemeyi düşünün.


-1

Bunu dene:

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

Umarım bu yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.