2012-06-29 21 views
33

Mam DataGridView (tryb wyboru: FullRowSelect) na formularzu systemu Windows wraz z niektórych pól tekstowych, więc to, co chcę zrobić, to zawsze, gdy użytkownik wybiera wiersz (może kliknij lub kliknij dwukrotnie), zawartość tego wiersza musi być wyświetlany w pola tekstowe,Uzyskiwanie danych z wybranego wiersza datagridview i które wydarzenie?

starałem się to kody

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; 
} 

istnieje wiele innych otaczaniem, ale głównym problemem jest to, że żaden z przypadku wydaje się być wyzwalane, jakie wydarzenie należy użyć, aby to zrobić, lub czy jest jakaś właściwość datagrid, który mógłbym ustawić źle? .. Każda pomoc będzie mile widziane ... :(

+1

Przejdź do projektanta formularzy i sprawdź właściwości/zdarzenia w widoku datgagridview. Zobacz tutaj, że te zdarzenia są powiązane z gridview – Talha

+0

dobrze zrobiłem sprawdzone pod żółtą pogrubioną ikoną pogrubioną, a te zdarzenia są tam wymienione, i mają kod, o którym wspomniałem powyżej ... –

+0

m I missing something? –

Odpowiedz

41

Można użyć zdarzenia SelectionChanged ponieważ używasz trybu wyboru FullRowSelect niż wewnątrz przewodnika można uzyskać dostęp do właściwości SelectedRows i uzyskać z niego dane Przykład:

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(); 
     //... 
    } 
} 

można również chodzić poprzez gromadzenie kolumny zamiast indeksów pisze ...

+0

Ale w moim przypadku DataGridView powinien wyświetlić tylko jedną kolumnę, tj. StudentName. Ale kiedy wybiorę rekord na DataGridView, powinienem uzyskać wszystkie szczegóły do ​​wyświetlenia przy użyciu innych kontrolek wyjściowych. jak nazwa, RollNo, klasa, adres itp., ale w tabeli bazy danych zawierają wszystkie szczegóły.Pomóż mi, jak mogę to zdobyć? – Sanjeev4evr

+0

zobacz poniżej moją odpowiedź. –

4

należy sprawdzić plik projektant Otwartych Form1.Designer.cs i
znaleźć ten wiersz:.. okna Form Designer wygenerowany kod
Rozwiń to, a zobaczysz dużo kodu. Więc sprawdź, czy ta linia jest tam wewnątrz formantów datagridview1, jeśli nie umieść go.

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

Mam nadzieję, że to pomaga.

7

Najpierw weź etykietę. ustawić jego widoczność na false, a następnie na razie DataGridView_CellClick napisać to

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

Można spróbować to zdarzenie click

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

Prostym rozwiązaniem byłoby jak poniżej. To jest poprawa rozwiązania z doliny.

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); 
} 

Uwaga dla innego czytelnika, na powyższy kod do pracy FullRowSelect tryb wyboru dla DataGridView powinny być stosowane. Możesz przedłużyć tę informację, jeśli wybierzesz więcej niż dwa wiersze.

Powiązane problemy