Saltar al contenido

¿Cómo obtener el valor de celda de DataGridView por nombre de columna?

Te sugerimos que revises esta respuesta en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

DataGridViewColumn los objetos tienen un Name (mostrado solo en el diseñador de formularios) y un HeaderText (que se muestra en la GUI en la parte superior de la columna). El indexador en su ejemplo usa la columna Name propiedad, por lo que como dice que no funciona, supongo que realmente está tratando de usar el encabezado de la columna.

No hay nada integrado que haga lo que quieres, pero es bastante fácil de agregar. Usaría un método de extensión para que sea fácil de usar:

public static class DataGridHelper

    public static object GetCellValueFromColumnHeader(this DataGridViewCellCollection CellCollection, string HeaderText)
    
        return CellCollection.Cast().First(c => c.OwningColumn.HeaderText == HeaderText).Value;            
    

Y luego en tu código:

foreach (DataGridViewRow row in Rows)

    if (object.Equals(row.Cells.GetCellValueFromColumnHeader("xxx"), 123))
    
        // ...
    
 

Sí, simplemente elimine las comillas y agregue .Index, es decir

foreach (DataGridViewRow row in Rows)
{
    if (object.Equals(row.Cells[xxx.Index].Value, 123)) 

… es decir, si su columna realmente se llama xxx y no algún otro nombre como Columna1, etc. Puede establecer el nombre de la columna y el encabezado de la columna de forma independiente, así que verifique en el diseñador.

Al hacer esto, podrá acceder a la celda en el nombre de la columna “xxx” para la fila seleccionada actualmente.

dataGridView1.SelectedRows[0].Cells["xxx"]

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *