none
Windows Form y Linq SQL "Como hacer un binding a los datagrid" RRS feed

  • Pregunta

  • Mi problema esta basado en que tengo un BD Normalizada y estoy usando LINQ y cuando cargo mis datos de la BD esta me sale con los encabezados como aparecen en la BD , y necesito poder hacer un binding de los encabezados. E investigado y tengo un metodo que me convierte el datacontext o la consulta sql de link a datatable pero no tengo idea de como hacer un binding con los nombres que yo deseo

    Se le agradece las respuestas. 

    Me gustaria saber como hacer en el data grid y data grid view 


    Strada


    • Editado Strada martes, 14 de agosto de 2012 1:25
    martes, 14 de agosto de 2012 1:21

Todas las respuestas

  • hola

    no entendi

    si quieres definir el los encabezados de un datagridview porque no lo ahces en el control directamente, que tiene que ver linq con esto

    [DataGridView] – Parte 4 - Uso del DataGridViewComboBoxColumn

    analiza la primer parte del articulo alli lo explico

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 14 de agosto de 2012 3:44
  • Lo que pasa es que no puedo hacer que los headers concuerde lo que voy a hacer es subir el codigo para que me entiendas a que me refiero , hablo de el Linq porque yo no hago una cosulta

    string sql = @"SELECT [IdProducto]
    04.
    ,[IdMarca]
    05.
    ,[Descripcion]
    06.
    ,[PrecioUnitario]
    07.
    FROM Productos";

    de este tipo .. 


    Strada

    viernes, 17 de agosto de 2012 0:05
  • Como es la consulta Linq que estas usando ?
    viernes, 17 de agosto de 2012 13:26
  • Hola si queres personalizar los encabezados de las columnas de un datagridview lo que tenes que hacer primero es asignarle false a lla propiedad autogeneratecolumns.

    asi: DataGridView1.autogeneratecolumns = false;

    Luego en el control datagridview agregas las columnas manualmente con los titulos que vos quieras.

    Cada columna tiene una serie de propiedades. Busca la que se llama datapropertyname. A esa propiedad le asignas el valor real de la columna de tu tabla en la base de datos. Esto lo haces con el diseñador del control datagridview. Ejemplo. Si en tu tabla tenes una columna que se denominada PrecioU y vos queres que salga en el grid como Precio Unitario, cuando agregas la columna en el grid con ese nombre que vos queres a la propiedad datapropertyname le asignas el nombre real de la columna en tu tabla de la base de datos, es decir, PrecioU.

    Entonces cuando hagas DataGridView1.DataSourse = query, saldran los resultados en el grid con los nombres de las columnas que vos agregaste. query es un ejemplo en donde pudiste haber almacenado los resultados de tu consulta LINQ.

    Espero haberme explicado bien y que te sirva.

    Saludos.


    • Editado ArielNet sábado, 18 de agosto de 2012 12:44
    sábado, 18 de agosto de 2012 12:39
  • Lo que uso en LINQ es asi   

            BD_Bufete_ChantoEntities context = new BD_Bufete_ChantoEntities();

            public List<Tb_Usuarios> ListarUsuarios()
            {          
                return (from usuarios in context.Tb_Usuarios
                        where usuarios.USU_Estado == true
                        select usuarios).ToList();                         
            }

            dtgClientes.DataSource = Cli.ListarClientes();

    Ahora bien lo que pasa es que al pasarlo a lista me devuelve los encabezados como aparece en mi BD Normalizada. 



    Strada

    miércoles, 22 de agosto de 2012 4:09
  • Lo que tenes que hacer es crear las columnas con el nombre que queras en tiempo de diseño del datagrid.

    Fijate como lo explica leandro al principio del articulo.

    Uso del DataGridViewComboBoxColumn

    Como veras la propiedad importante de cada columna es DataPropertyName ahí especificas el nombre de la columna de origen de datos y ya luego podes poner el encabezado que queras.

    Saludos.

    miércoles, 22 de agosto de 2012 4:32
  • Buenos días.

    Hay una forma de hacer lo que quieres en tiempo de ejecución. Es la siguiente

    DataGridView1.Columns[Indice].HeaderText=”Texto de encabezado”

    Donde Indice puede ser un numero de base cero o un testo con el nombre de la columna no confundir con la propiedad DataGridView1.Columns[Indice].Name=”Nombre columna” que seria el nombre de referencia de la columna y si cambias ese a partir de ese momento para hacer referencia a la columna debes utilizar el que pusieras. Un Saludo

    viernes, 24 de agosto de 2012 8:42
  • Voy a probar . En caso de funcionar marco cual me sirvió como la respuesta.  Gracias por ayudarme 


    Strada

    viernes, 24 de agosto de 2012 15:37