2010-08-23 49 views
6

Tôi có một bảng mà tôi đang hiển thị trong điều khiển chế độ xem lưới dữ liệu. Người dùng chọn một hàng duy nhất từ ​​điều khiển và nhấn một nút. Tôi cần lấy các ô từ hàng đó và lưu trữ chúng dưới dạng chuỗi.Làm cách nào để nhận dữ liệu hàng đã chọn từ chế độ xem lưới dữ liệu bằng cách sử dụng SelectedRows?

Chính xác làm cách nào để lấy dữ liệu bằng phương thức SelectedRow? Tôi đã làm việc này trong vài giờ và tôi đang ở cuối sợi dây. Dưới đây là ví dụ về điều tôi đã thử:

DataGridViewCellCollection selRowData = dataGridView1.SelectedRows[0].Cells; 

Nếu tôi cố gắng truy cập selRowData [x], giá trị trả về không chứa dữ liệu của tôi.

+0

trả lời [ở đây] [1] lặp qua tất cả các tế bào để xây dựng một chuỗi văn bản. [1]: http://stackoverflow.com/a/10525686 – ZMan

Trả lời

7

Bạn đang gần - bạn cần phải tham khảo mỗi Cell thông qua chỉ số của nó và trả lại tài sản của mình Value:

string firstCellValue = dataGridView1.SelectedRows[0].Cells[0].Value; 
string secondCellValue = dataGridView1.SelectedRows[0].Cells[1].Value; 

, vv

1

Hãy thử sử dụng các yếu tố mục của DGV.

dgvFoo.Item(0, dgvFoo.CurrentRow.Index).Value 

Điều đó sẽ trả về giá trị của mặt hàng đầu tiên. Bạn có thể đặt nó vào vòng lặp for để có được tất cả.

Một tùy chọn khác là sử dụng bộ sưu tập SelectedRows trên đối tượng và lặp qua từng hàng đã chọn (hoặc chỉ một hàng trong trường hợp của bạn).

1

Vâng không có tài sản datagridview mục .. @ Jay Riggs giải pháp tốt hơn là ... giải pháp sau đây cũng hoạt động:

string firstCellValue = dataGridView1[0,dataGridView1.CurrentRow.Index].Value.ToString(); 
string secondCellValue = dataGridView1[0,dataGridView1.CurrentRow.Index].Value.ToString(); 

đây 0 là cột đầu tiên và dataGridView1.CurrentRow.Index là Row hiện tại từ đâu để có được giá trị.

1

Nếu bạn muốn dữ liệu và dữ liệu được khả năng liên kết với một nguồn dữ liệu, sau đó tôi có thể đề nghị bạn nên lấy chìa khóa từ sự chọn lựa, và sau đó bạn có thể sử dụng để truy cập dữ liệu bất kỳ cách nào bạn thích:

dataGridView.SelectedDataKey.Value; 
0

có lẽ đây là một giải pháp phù hợp hơn sử dụng các giá trị tế bào của hàng nhấp:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex > -1) 
    { 
    var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString(); 
    } 
} 
Các vấn đề liên quan