Posted on nov 16, 2011



¿Cómo accedo al valor de una columna en un GridView de detalle con DevExpress?

@jsot del futuro, aquí te dejo una nota:

Supongamos que estamos haciendo un programa para algún administrador de zoológicos y teniendo una lista de zoológicos y otra de animales, necesita decir que animales están en cada un zoológico. *

Bueno, usando el GridControl de DeveloperExpress, quería representar algo similar, usando dos GridViews en maestro/detalle (mi campo de relación es idZoologico).

El problema vino al momento de querer acceder los datos del gridView detalle. ¡Nunca contenía datos!

Después de dar vueltas y vueltas, dí con la solución: **


private void gridViewDet_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
    //Obtenemos el id del zoológico padre
    int idZoo = Convert.ToInt32(gridViewMto.GetFocusedRowCellValue(colIdZoo));
    //Obtenemos el valor de la columna que está cambiando
    bool chk = Convert.ToBoolean(e.Value);

    //Aquí obtengo el gridView detalle que está activo en este momento
    GridView vwDetalle = (GridView)gridViewMto.GetDetailView(gridViewMto.FocusedRowHandle, 0);
    //Aquí obtengo el id del animal que estamos seleccionando
    int idAnimal  = vwDetalle.GetFocusedRowCellDisplayText("IdAnimal").ToString();
}

El problema lo tenía por que estaba todo hecho bolas con los eventos y quería controlar el evento EditValueChange del RepositoryItemCheckEdit de la columna en el grid de detalle y, pués… no era así.

* El ejemplo no es real.
** El código a lo mejor no es elegante o perfecto, solamente quería documentar como sacar los valores de un grid detalle.