none
¿Como lleno un Datagridview con una consulta SQL, pero que los datos los ponga en columnas ya establecidas? RRS feed

  • Pregunta

  • Buenas tardes a todos.

    Tengo un pequeño inconveniente, en un form tengo un textbox, un botón y un datagridview. Lo que deseo hacer es que cuando el usuario digite en el textbox un código de producto y de clic en el botón "buscar", me cargue la consulta que ya tengo establecida en mi base de datos SQL server.

    A mi datagridview le he puesto columnas por defecto, para que la información consultada recaiga sobre esas celdas. Pero al ejecutar el proyecto y al dar clic en el botón "buscar", si me consulta pero la información la pone en columnas adicionales, y las que he creado quedan vacías.

    Teniendo en cuenta lo anterior, pido la colaboración de quienes deseen ayudarme a corregir este inconveniente, no quiero que salgan columnas adicionales cuando consulto, si no que la consulta la muestre en las columnas que he creado por defecto.

    de antemano gracias por la colaboración.

    lunes, 25 de abril de 2016 22:16

Respuestas

  • Debes establecer la propiedad DataPropertyName de la columna con el nombre del campo que quieres mostrar.

    Conviene  que pongas también la propiedad AutoGenerateColumns del DataGridView a false.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta Wilson Ardila martes, 26 de abril de 2016 17:30
    lunes, 25 de abril de 2016 22:50

Todas las respuestas

  • Debes establecer la propiedad DataPropertyName de la columna con el nombre del campo que quieres mostrar.

    Conviene  que pongas también la propiedad AutoGenerateColumns del DataGridView a false.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta Wilson Ardila martes, 26 de abril de 2016 17:30
    lunes, 25 de abril de 2016 22:50
  • Hola Asier Villanueva.

    gracias por tu ayuda, funciona perfecto. No pensé que fuera algo tan sencillo. Sin embargo, en mi datagridview tengo una columna con un valor por defecto en el load, al oprimir el botón "Buscar", trae los datos de la consulta a las demás columnas, pero el valor por defecto se borra y queda la celda Null. ¿Tienes alguna idea de como hacer para que ese valor no se borre cuando carga los datos al control?

    Nuevamente muchas gracias.

    martes, 26 de abril de 2016 17:34
  • Pero ¿cómo asignas el valor por defecto a la columna?

    Lo que puedes hacer es asignar un valor a la propiedad NullValue del DefaultCellStyle de la columna:

    DataGridView1.Columns(columnIndex).DefaultCellStyle.NullValue= "Valor por defecto"

    Pero tienes que tener en cuenta que el valor de la celda va a seguir siendo NULL, lo único que hace esto es mostrar este mensaje en las celdas que tengan un valor nulo.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 26 de abril de 2016 19:09
  • Hola Asier Villanueva.

    El valor por defecto lo asigno mediante un texbox, pero de igual forma necesito que la celda no sea NULL, porque la información cargada en el datagridview, la necesito para enviarla a otra tabla de mi base de datos. y ese valor que le asigno por defecto es la llave principal.

    No puedo digitarlo manualmente porque esa columna la tengo oculta intencionalmente para que el formulario cargue el consecutivo automáticamente en el texbox y este a su vez, envíe el mismo valor a la columna del datagridview.

    no se si me hice entender mejor esta vez, muchas gracias.

    martes, 26 de abril de 2016 19:42
  • Entonces deberías usar el evento DefaultValuesNeeded del DataGridView que te permite indicar valores por defecto para las celdas al añadirse una nueva fila:

        Private Sub DataGridView1_DefaultValuesNeeded(sender As Object, e As DataGridViewRowEventArgs) Handles DataGridView1.DefaultValuesNeeded
            e.Row.Cells("ColumnaID").Value = TextBoxNextID.Text
        End Sub


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 26 de abril de 2016 20:19
  • Hola Asier Vilanueva.

    El evento que tu mencionas es el que estoy usando para traer el valor por defecto, y funciona bien hasta que cargo los demás datos. es hay cuando se borra el valor y la celda queda NULL.

    martes, 26 de abril de 2016 20:57
  • Habría que ver el código que utilizas para cargar los datos.

    Ten en cuenta que este valor por defecto únicamente se añade cuando se crean nuevas filas. Si vuelcas datos con este valor a null te va a coger el valor de los datos, es decir null.

    Lo que puedes hacer es asignar el valor de los ids en los datos a volcar.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 26 de abril de 2016 21:19