Chọn một hàng trong DataGridView theo chương trình


109

Làm cách nào để tôi có thể chọn một phạm vi hàng cụ thể trong một DataGridViewchương trình trong thời gian chạy?

Câu trả lời:


127

Chưa được kiểm tra, nhưng tôi nghĩ bạn có thể làm như sau:

dataGrid.Rows[index].Selected = true;

hoặc bạn có thể làm như sau (nhưng một lần nữa: không được kiểm tra):

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

Hãy cẩn thận nếu DataGridView của bạn read-only- thì SelectedRows.Clear()sẽ không hoạt động.
Derek W

14
Thay vì SelectedRows.Clear () sử dụng phương thức ClearSelection () của cá thể datagridview
Furkan

1
@Furkan: Điều đó không làm điều tương tự. Với SelectedRows.Clear()chỉ có các hàng đã chọn được xóa, nhưng với ClearSelection()cũng các cột => cột-selections bị mất ...
Christoph Fink

17
thêm một dòng mãdataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: sự kiện SelectionChanged dường như không được kích hoạt khi kiểm tra đề xuất của bạn.
user2430797

34

Trong Visual Basic, hãy thực hiện việc này để chọn một hàng trong một DataGridView; hàng đã chọn sẽ xuất hiện với màu được đánh dấu nhưng lưu ý rằng vị trí con trỏ sẽ không thay đổi:

Grid.Rows(0).Selected = True

Làm điều này để thay đổi vị trí của con trỏ:

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

Kết hợp các dòng trên sẽ định vị con trỏ và chọn một hàng. Đây là quy trình tiêu chuẩn để lấy nét và chọn một hàng trong một DataGridView:

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

Grid.Rows (0) .Cells (0) rất hữu ích trong trường hợp dữ liệu lưới dài hơn vùng hiển thị lưới. Thứ tự được đề cập ở trên là không cần thiết, bạn có thể vuốt mã để chọn hàng / ô [nguồn: Đã kiểm tra cá nhân].
BiLaL

Làm thế nào để di chuyển lưới đến vị trí đã chọn? Hàng được chọn nhưng vị trí lưới không nằm trên hàng đã chọn. Thao tác cuộn hiển thị hàng đã chọn theo cách thủ công. Làm thế nào để buộc lưới cuộn?
FrenkyB

Xem điều đó: 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. Xóa tất cả lựa chọn trước đó.
  2. Lặp qua các hàng cần thiết để được chọn trong lưới của bạn.
  3. Lấy tay cầm hàng của họ từ lưới (Lưu ý ở đây lưới đã được cập nhật với các hàng mới)
  4. Kiểm tra xem điều khiển hàng có hợp lệ hay không.
  5. Khi xử lý hàng hợp lệ, hãy chọn nó.

Trong đó itemList là danh sách các hàng được chọn trong dạng xem lưới.




-1

Khi đặt hàng Đã chọn của DataGridView tại thời điểm tải, hãy cân nhắc xử lý điều này trong sự kiện DataBindingComplete, vì nó có thể bị ghi đè theo mặc định.


-1

Thử cái này:

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

Hy vọng điều này giúp đỡ!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.