none
Nombre de columnas en datagrid. RRS feed

  • Pregunta

  • Hola buenas, a ver si me podéis echar una mano.

    Tengo un datagrid con autogeneratecolumns=true y rellenado con una consulta linq.

    ¿Hay alguna manera de acceder por código a X columna por nombre de columna en vez de por número?

    Gracias de antemano.

    martes, 25 de enero de 2011 8:34

Respuestas

  • Hola!

    Directamente solo puedes acceder a la colección por índice, pero podemos usar Linq To Objects para obtener una referencia a una columna filtrando por su header (el nombre de la columna):

    List<prueba> pruebalista = new List<prueba>();
    pruebalista.Add(new prueba() { prueba1 = "", prueba2 = 1, prueba3 = 2.3 });
    
    dataGrdEjemplo.ItemsSource = (from prueba elemento in pruebalista 
                    select elemento).ToList();
    
    DataGridColumn col = (from  DataGridColumn dgcol in 
                    dataGrdEjemplo.Columns 
                where dgcol.Header.Equals("prueba1")
                select dgcol).FirstOrDefault();
    

    En este ejemplo, tenemos 3 columnas: prueba1, prueba2 y prueba3, metemos los datos en el datagrid y usamos linq para obtener una referencia de la col filtrando por su header, si tocamos propiedades en esa columna se reflejará en la datagrid.

    Un gran saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    martes, 25 de enero de 2011 21:06
    Moderador

Todas las respuestas

  • Hola!

    Directamente solo puedes acceder a la colección por índice, pero podemos usar Linq To Objects para obtener una referencia a una columna filtrando por su header (el nombre de la columna):

    List<prueba> pruebalista = new List<prueba>();
    pruebalista.Add(new prueba() { prueba1 = "", prueba2 = 1, prueba3 = 2.3 });
    
    dataGrdEjemplo.ItemsSource = (from prueba elemento in pruebalista 
                    select elemento).ToList();
    
    DataGridColumn col = (from  DataGridColumn dgcol in 
                    dataGrdEjemplo.Columns 
                where dgcol.Header.Equals("prueba1")
                select dgcol).FirstOrDefault();
    

    En este ejemplo, tenemos 3 columnas: prueba1, prueba2 y prueba3, metemos los datos en el datagrid y usamos linq para obtener una referencia de la col filtrando por su header, si tocamos propiedades en esa columna se reflejará en la datagrid.

    Un gran saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    martes, 25 de enero de 2011 21:06
    Moderador
  • Hola DonPituti

    ¿Has podido solucionar el problema? Si lo has solucionado sería bueno que marques la respuesta correcta para que otros puedan localizarla.

    Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    jueves, 10 de febrero de 2011 11:36
    Moderador