2012-06-29 1 views
33

У меня есть DataGridView (Selectionmode: FullRowSelect) в форме окна вместе с некоторыми текстовыми полями, поэтому я хочу, чтобы каждый раз, когда пользователь выбирает строку (возможно, щелчок или double_click), содержимое этой строки должно отображаться в текстовые поля,Получение данных из выбранной строки datagridview и какого события?

я попробовал этот код

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

есть много других Textboxes, но главная проблема в том, что ни один из события, кажется, не срабатывают, какое событие я должен использовать, чтобы сделать это, или есть ли какое-то свойство datagrid, которое я мог бы установить неправильно? .. Любая помощь будет оценена ... :(

+1

Перейдите в конструктор форм и проверьте свойства/события в datgagridview. См. Здесь, эти события привязаны к gridview – Talha

+0

Ну, я проверил под желтым осветляющим жирным значком, и эти события перечислены там, и есть код, который я упомянул выше ... –

+0

m i missing something ?? –

ответ

41

Вы можете использовать SelectionChanged событие, так как вы используете режим выбора FullRowSelect чем внутри обработчика вы можете получить доступ к SelectedRows собственности и получить из него данные Пример:

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

Вы также можете пройти через сбор колонны вместо ввода индексов ...

+0

Но в моем случае DataGridView должен отображать только один столбец, т.е. StudentName. Но когда я выбираю запись в DataGridView, я должен получить все детали для отображения с использованием других элементов управления выходом. имя, RollNo, класс, адрес и т. д., но в таблице базы данных содержатся все детали.Помогите мне, как я могу это получить? – Sanjeev4evr

+0

см. Ниже мой ответ. –

4

Вы должны проверить файл дизайнер Open Form1.Designer.cs и
найти эту строку:.. окна Form Designer Generated Code
Разверните это, и вы увидите много кода. Так что проверяйте, существует ли эта строка внутри элементов управления datagridview1, если не поместить ее.

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

Надеюсь, это поможет.

7

Сначала возьмите этикетку. установить его видимость ложно, то на событие DataGridView_CellClick написать этот

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

Вы можете попробовать этот щелчок событие

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

Простое решение будет, как показано ниже. Это улучшение решения из долины.

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

Примечание для другого читателя, для выше кода, чтобы работать FullRowSelect режим выбора для DataGridView должно быть использовано. Вы можете продлить это, чтобы дать сообщение, если выбрано более двух строк.

Смежные вопросы