Получение данных из выбранной строки datagridview и какого события?
У меня есть DataGridView (Selectionmode: FullRowSelect) в форме окна вместе с некоторыми текстовыми полями, поэтому я хочу, чтобы каждый раз, когда пользователь выбирает строку (возможно, щелчок или double_click), содержимое этой строки должно отображаться в текстовых полях,
Я пробовал эти коды
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;
}
есть много других текстовых полей, но главная проблема заключается в том, что ни одно из событий не срабатывает, какое событие я должен использовать для этого, или есть какое-то свойство datagrid, которое я мог бы установить неправильно?
Любая помощь будет оценена...: (
Ответы
Ответ 1
Вы можете использовать событие 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();
//...
}
}
Вы также можете пройти через коллекцию столбцов вместо ввода индексов...
Ответ 2
Вы можете попробовать это событие 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
Сначала возьмите ярлык.
установите его видимость на false, а затем в событии 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
Ответ 4
Вы должны проверить свой файл дизайнера. Откройте форму Form1.Designer.cs и
найти эту строку: Windows Form Designer Generated Code.
Разверните это, и вы увидите много кода. Итак, проверьте, существует ли эта строка внутри элементов управления datagridview1, если не поместить ее.
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
Надеюсь, это поможет.
Ответ 5
Простое решение будет таким, как показано ниже. Это улучшение решения из долины.
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. Вы можете расширить это, чтобы дать сообщение, если выбрано более двух строк.