c# - form - Obteniendo datos de la fila de grid de datos seleccionados y ¿qué evento?
fill datagridview c# (5)
Tengo un DataGridView (Selectionmode: FullRowSelect) en un formulario de Windows junto con algunos cuadros de texto, así que lo que quiero hacer es que cada vez que un usuario seleccione una fila (haga clic o haga doble clic tal vez), el contenido de esa fila debe mostrarse en el texto cajas,
Probé estos códigos
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;
}
hay muchos otros cuadros de texto, pero el problema principal es que ninguno de los eventos parece activarse, ¿qué evento debo usar para hacerlo, o hay alguna propiedad de datagrid que podría haber configurado mal? Cualquier ayuda sería apreciada...:(
Debes revisar tu archivo de diseñador. Abra Form1.Designer.cs y
encuentre esta línea: Windows Form Designer Generated Code.
Expande esto y verás un montón de código. Así que compruebe si esta línea está allí dentro de los controles de datagridview1 si no la coloca.
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
Espero que ayude.
La solución simple sería la siguiente. Esta es la mejora de la solución de 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);
}
Nota para el otro lector, para que el código anterior funcione, se debe FullRowSelect
modo de selección FullRowSelect
para datagridview. Puede extender esto para dar un mensaje si se seleccionaron más de dos filas.
Primero toma una etiqueta. establece su visibilidad en falso, luego en el evento DataGridView_CellClick escribe esto
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
Puede probar este evento de clic
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();
Puede usar el evento SelectionChanged ya que está utilizando el modo de selección FullRowSelect. Que dentro del controlador puede acceder a la propiedad SelectedRows y obtener datos de ella. Ejemplo:
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();
//...
}
}
También puede recorrer la colección de columnas en lugar de escribir índices ...