Memilih baris di DataGridView secara terprogram

109

Bagaimana saya bisa memilih rentang baris tertentu secara DataGridViewterprogram pada waktu proses?

Nagendra
sumber

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;
}
Christoph Fink
sumber
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
Rodrigo T.
sumber
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;
IM999MaxBonum
sumber
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.

IFlyHigh
sumber
0

Coba ini:

datagridview.Rows[currentRow].Cells[0];
Ganesh Kamath - 'Code Frenzy'
sumber
datagridview.Rows[currentRow].Cells[0] Mendapat ... sel di lokasi indeks yang disediakan. Bagaimana cara ini memilih rentang baris tertentu seperti yang diminta dalam pertanyaan?
dbc
-1

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

Daniel Ohm
sumber
-1

Coba ini:

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

Semoga bantuan ini!

lecntp
sumber