2012-06-29 82 views
33

Tôi có một DataGridView (Selectionmode: FullRowSelect) trên một cửa sổ mẫu cùng với một số hộp văn bản, vì vậy những gì tôi muốn làm là bất cứ khi nào người dùng chọn một hàng (nhấp hoặc double_click có thể), nội dung của hàng đó phải được hiển thị trong các hộp văn bản,Lấy dữ liệu từ hàng dữ liệu đã chọn và sự kiện nào?

tôi đã cố gắng ra này mã

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    MessageBox.Show("CEll Double_Click event calls"); 
    int rowIndex = e.RowIndex; 
    DataGridViewRow row = dataGridView1.Rows[rowIndex]; 
    textBox5.Text = row.Cells[1].Value; 
} 

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    int rowIndex = e.RowIndex; 
    DataGridViewRow row = dataGridView1.Rows[rowIndex]; 
    textBox5.Text = dataGridView1.Rows[1].Cells[1].Value.ToString();// row.Cells[1].Value; 
} 

có nhiều textbox khác, nhưng vấn đề chính là không ai trong số sự kiện này dường như được kích hoạt, những gì sự kiện tôi nên sử dụng để làm như vậy, hoặc là có một số tài sản của datagrid mà tôi có thể đã thiết lập sai? .. Bất kỳ trợ giúp sẽ được đánh giá cao ... :(

+1

Đi tới trình thiết kế biểu mẫu và kiểm tra Thuộc tính/Sự kiện của chế độ xem dữ liệu. Xem ở đây những sự kiện này được liên kết với gridview – Talha

+0

tôi cũng đã kiểm tra dưới biểu tượng đậm màu vàng sáng, và những sự kiện này được liệt kê ở đó, và có mã mà tôi đã đề cập ở trên ... –

+0

m tôi thiếu cái gì ?? –

Trả lời

41

Bạn có thể sử dụng sự kiện SelectionChanged kể từ khi bạn đang sử dụng chế độ lựa chọn FullRowSelect Thần bên trong xử lý, bạn có thể truy cập vào bất động sản SelectedRows và lấy dữ liệu từ nó Ví dụ:

private void dataGridView_SelectionChanged(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGridView.SelectedRows) 
    { 
     string value1 = row.Cells[0].Value.ToString(); 
     string value2 = row.Cells[1].Value.ToString(); 
     //... 
    } 
} 

bạn cũng có thể đi bộ qua các bộ sưu tập cột thay vì chỉ gõ ...

Form1.designer.cs mở
+0

Nhưng trong trường hợp của tôi DataGridView sẽ chỉ hiển thị một cột tức là StudentName. Nhưng khi tôi chọn bản ghi trên DataGridView tôi sẽ nhận được tất cả các chi tiết để hiển thị bằng cách sử dụng các điều khiển đầu ra khác. như tên, RollNo, Class, Address vv .. nhưng trong bảng cơ sở dữ liệu chứa tất cả các chi tiết.Giúp tôi làm thế nào tôi có thể nhận được điều này? – Sanjeev4evr

+0

xem bên dưới câu trả lời của tôi. –

4

bạn nên kiểm tra file thiết kế của bạn và
tìm dòng này:.. cửa sổ Form Designer tạo Mã
Mở rộng này và bạn sẽ thấy rất nhiều mã. Vì vậy, kiểm tra xem dòng này là có bên trong điều khiển datagridview1 nếu không đặt nó.

this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick); 

Tôi hy vọng điều đó sẽ hữu ích.

7

Đầu tiên hãy ghi nhãn. thiết lập mức độ hiển thị sai, sau đó trên các sự kiện DataGridView_CellClick viết này

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    label.Text=dataGridView1.Rows[e.RowIndex].Cells["Your Coloumn name"].Value.ToString(); 
    // then perform your select statement according to that label. 
} 
//try it it might work for you 
11

Bạn có thể thử sự kiện nhấp chuột này

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex >= 0) 
    { 
     DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex]; 
     Eid_txt.Text = row.Cells["Employee ID"].Value.ToString(); 
     Name_txt.Text = row.Cells["First Name"].Value.ToString(); 
     Surname_txt.Text = row.Cells["Last Name"].Value.ToString(); 
3

giải pháp đơn giản sẽ là như dưới đây. Đây là cải tiến của giải pháp từ vale.

private void dgMapTable_SelectionChanged(object sender, EventArgs e) 
{ 
    int active_map=0; 
    if(dgMapTable.SelectedRows.Count>0) 
     active_map = dgMapTable.SelectedRows[0].Index; 
    // User code if required Process_ROW(active_map); 
} 

Lưu ý cho người đọc khác, cho mã trên để làm việc FullRowSelect chế độ lựa chọn cho datagridview nên được sử dụng. Bạn có thể mở rộng thông báo này để gửi tin nhắn nếu có nhiều hơn hai hàng được chọn.

Các vấn đề liên quan