Obtener los valores del datagrid por índice de fila para su uso posterior.
Estoy intentando obtener los valores de las celdas de una fila de un datagrid en la que hago clic y almacenarlos para usarlos más tarde, pero parece que no puedo hacerlo funcionar.
Al hacer clic en la fila, debería aparecer un menú en el que pueda elegir hacer una acción con esos valores.
Esto es lo que he logrado hasta ahora:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs x)
{
if (dataGridView1.Rows[x.RowIndex].Cells["Name"].Value != null) name = dataGridView1.Rows[x.RowIndex].Cells["Name"].Value.ToString();
else if (dataGridView1.Rows[x.RowIndex].Cells["LastName"].Value != null) last = dataGridView1.Rows[x.RowIndex].Cells["LastName"].Value.ToString();
}
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (last != null && name != null)
{
ContextMenu cm = new ContextMenu();
this.ContextMenu = cm;
cm.MenuItems.Add(new MenuItem("Hacer algo con esos valores en esta fila", new System.EventHandler(this.do_Action_with_values)));
cm.Show(this, new Point(e.X, e.Y));
}
last = null;
name = null;
}
}
Eliminar: if (last != null && name != null)
Hará que el menú funcione, pero los valores no se guardan, todos son nulos.
¿Existe una forma adecuada de almacenar en cadenas todos los valores de las columnas para la fila en la que se hace clic?
davy.ai
Para almacenar adecuadamente todos los valores de columna para la fila seleccionada, se puede recorrer en bucle las columnas de la fila seleccionada y guardar cada valor en una cadena de texto o en un conjunto. Aquí hay un ejemplo:
En este ejemplo, el método
dataGridView1_CellClick
se modifica para recorrer en bucle las celdas de la fila seleccionada y guardar sus valores en una lista. Los valores de la fila se almacenan entonces en las variables de cadena o matriz de cadena para su uso posterior. El menú se muestra en el mismo método.El método
do_Action_with_values
es donde se usarían los valores de fila guardados para la acción.