Memilih baris di DataGridView secara terprogram


Jawaban:


127

Belum diuji, tapi saya rasa Anda bisa melakukan hal berikut:

dataGrid.Rows[index].Selected = true;

atau Anda dapat melakukan hal berikut (tetapi sekali lagi: belum diuji):

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

Waspadalah jika DataGridView Anda read-only- maka SelectedRows.Clear()tidak akan berfungsi.
Derek W

14
Alih-alih SelectedRows.Clear () gunakan metode ClearSelection () dari instance datagridview
Furkan

1
@ Furkan: Itu tidak melakukan hal yang sama. Dengan SelectedRows.Clear()hanya baris yang dipilih yang dihapus, tetapi dengan ClearSelection()kolom => kolom-pilihan hilang ...
Christoph Fink

17
tambahkan satu baris kodedataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: acara SelectionChanged tampaknya tidak dipicu saat menguji saran Anda.
pengguna2430797

34

Dalam Visual Basic, lakukan ini untuk memilih baris dalam a DataGridView; baris yang dipilih akan muncul dengan warna yang disorot tetapi perhatikan bahwa posisi kursor tidak akan berubah:

Grid.Rows(0).Selected = True

Lakukan ini untuk mengubah posisi kursor:

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

Menggabungkan garis di atas akan memposisikan kursor dan memilih satu baris. Ini adalah prosedur standar untuk pemfokusan dan pemilihan baris dalam DataGridView:

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

Grid.Rows (0) .Cells (0) sangat berguna jika data grid lebih panjang dari area tampilan grid. Urutan yang disebutkan di atas tidak perlu, Anda dapat menggesek kode untuk pemilihan baris / sel [sumber: Diuji Secara Pribadi].
BiLaL

Bagaimana cara memindahkan kisi ke posisi yang dipilih? Baris dipilih tetapi posisi kisi tidak pada baris yang dipilih. Menggulir secara manual menampilkan baris yang dipilih. Bagaimana cara memaksa grid untuk menggulir?
FrenkyB

Lihat bahwa: 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. Hapus semua pilihan sebelumnya.
  2. Loop melalui baris harus dipilih di grid Anda.
  3. Dapatkan tuas baris mereka dari kisi (Perhatikan di sini kisi sudah diperbarui dengan baris baru)
  4. Memeriksa apakah pegangan baris valid atau tidak.
  5. Ketika pegangan baris valid maka pilih itu.

Dimana itemList adalah daftar baris yang akan dipilih dalam tampilan kisi.




-1

Saat menyetel baris yang Dipilih dari DataGridView pada waktu muat, pertimbangkan untuk menanganinya dalam acara DataBindingComplete, karena dapat ditimpa secara default.


-1

Coba ini:

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

Semoga bantuan ini!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.