2010-06-08 4 views
6

Có ai giúp tôi không?Làm thế nào để tìm ID hàng từ datagridview, cho một giá trị hàng?

tôi phải tìm ra số hàng từ 1 mảng chọn mà tôi lưu trữ trong một mảng riêng biệt và một cách ngẫu nhiên Tôi đang cố gắng để có được số lượng hàng từ datagridview

Nói cách khác: nếu tôi biết một giá trị cột cho một hàng nhất định trong một chế độ xem dữ liệu (ví dụ: đối với hàng này, FirstName == 'Bud'), làm cách nào tôi có thể nhận được ID hàng?

Trả lời

1

Có lẽ một số cách dễ dàng hơn khi bạn lọc theo cách nào đó nhưng tại thời điểm này tôi chỉ có thể nghĩ đến việc lặp qua nó.

int rowIndex = -1; 
foreach(DataGridViewRow row in DataGridView1.Rows) 
{ 
    if(row.Cells(1).Value.ToString().Equals("mystr")) 
    { 
     rowIndex = row.Index; 
     break; 
    } 
} 
// rowIndex is now either the correct index or -1 if not found 
19

Bạn có thể sử dụng LINQ truy vấn:

 int index = -1; 

     DataGridViewRow row = dgv.Rows 
      .Cast<DataGridViewRow>() 
      .Where(r => r.Cells[columnId].Value.ToString().Equals("Some string")) 
      .First(); 

     index = row.Index; 
+0

Tôi không biết các ô id i chỉ lưu trữ tất cả ô trong một mảng saprate, được chọn ngẫu nhiên từ mảng đó và tôi muốn? trong đó hàng của nó thuộc về – user361108

+0

Vâng, đúng vậy. Nhưng bạn biết cột, và truy vấn này sẽ chọn hàng đầu tiên có "Một số chuỗi" trong cột của bạn. –

0

Từ: http://www.vbforums.com/showthread.php?t=610134

Gọi Find phương pháp của BindingSource và nó sẽ trở lại chỉ số của hàng phù hợp nếu có là một. Nếu có, bạn chỉ mục BindingSource để nhận hàng đó và cập nhật các trường thích hợp. Nếu không có , bạn hãy gọi phương thức AddNew của BindingSource để tạo hàng mới và đặt trường thích hợp.

0
//If U Have Add CheckBox To Ur Datagridview 
int rowIndex = -1; 
DataGridViewCheckBoxCell oCell; 
foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    oCell = row.Cells[0] as DataGridViewCheckBoxCell; 
    bool bChecked = (null != oCell && null != oCell.Value && true == (bool)oCell.Value); 
    if (true == bChecked) 
    { 
     rowIndex = row.Index; 
     //ur code 
    } 
}