none
DataGridView no muestra datos

    Pregunta

  • Buenos Dias  as tod@s

    tengo un problema con un datagridview.

    Si al datagaridview tiene la propiedad AutoGenerateColumns = False  me muestra la cantidad de campos pero no los datos como se muestra en la figura

    Nombres de las columnas

    Si quito la propiedad AutoGenerateColumns = False" me muestra los datos pero adicionalmente las columnas en blanco como se muestra en la figura

    Estoy cargando el datagridview de la siguiente manera:

    Capa Presentación

    Private Sub btn_agregar_Click(sender As Object, e As EventArgs) Handles btn_agregar.Click
           
            If tab_recepcion.SelectedIndex = 0 Then
                PrendaSeleccionada = SelectPrenda.ListaPrendas().FirstOrDefault(Function(x) x.id_prenda = CDbl(txt_cod_prenda.Text))
                DatoDetalleLavado()
                NuevaRemision.AgregarDetalle(DetalleRemision)
                LimpiarPrendaCbox()
                ActNumDetalle(NumCaja, DetalleRemision.NumDetRemision)
                dgv_recepcion.DataSource = VerDetallesLavadoRemision(CDbl(txt_id_remision.Text))
              
            Else
                PrendaSeleccionada = SelectPrenda.ListaPrendas().FirstOrDefault(Function(x) x.id_prenda = CDbl(txt_cod_prenda.Text))
                DatosDetalleMarcado()
                NuevaRemision.AgregarDetalle(DetalleRemision)
                LimpiarPrendaCbox()
                ActNumDetalle(NumCaja, DetalleRemision.NumDetRemision)
                dgv_recepcion.DataSource = VerDetallesLavadoRemision(CDbl(txt_id_remision.Text))
                dgv_recepcion.Update()
             
            End If
    
        End Sub

    Capa Negocios

      Private Function VerDetallesLavadoRemision(NumRemision As Double) As DataTable
            Return NuevaRemision.CargarDetalles(NumRemision)
        End Function

    Capa Datos

    Public Function MostrarDetalles(ByVal NumRemision As Double) As DataTable Try Dim cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("lava_cnn").ToString()) Dim cmd As New SqlCommand("sp_detalle_lavado") cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cnn cnn.Open() cmd.Parameters.AddWithValue("@id_remision", NumRemision) If CBool(cmd.ExecuteNonQuery) Then

    Dim dt as New DataTable Dim da As New SqlDataAdapter(cmd) da.Fill(dt) Return dt Else Return Nothing End If cnn.Dispose() Catch ex As Exception MsgBox(ex.Message,, "LAVAPOS") Return Nothing End Try Return Nothing End Function

    Datos devueltos Procedimiento Almacenado

    La verdad no se que estoy estoy haciendo mal si me pueden echar una mano

    Gracias


    Freddy Aragon

    martes, 31 de enero de 2017 14:31

Respuestas

  • Freddy Aragon,

    Tienes dos opciones:

    - No agregues las columnas en tiempo de diseño, establece a true la propiedad AutoGenerateColumns para que las columnas se agreguen automáticamente según el origen de datos, en caso el nombre de las columnas que retorna la consulta de selección no sea el adecuado podrás establecer un alias a cada columna:

    SELECT 
            Col1 AS [N® Remisión],
            Col2 AS [Num Detalle],
            /*...*/

    - Agrega las columnas en tiempo de diseño, establece a false la propiedad AutoGenerateColumns para que las columnas no se agreguen automáticamente según el origen de datos, y -muy importante- debes configurar la propiedad DataPropertyName para asignar el nombre de la propiedad del origen de datos que se enlaza con la columna (la propiedad se muestra en la segunda imagen que adjuntas).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Freddy Aragon martes, 31 de enero de 2017 16:12
    martes, 31 de enero de 2017 14:51
  • Donde dice DataPropertyName, pon el nombre de la propiedad que quieres visualizar en esa columna.
    • Marcado como respuesta Freddy Aragon martes, 31 de enero de 2017 16:12
    martes, 31 de enero de 2017 14:36
  • Hola, como te han comentado,pon el valor de la propiedad autogeneratecolumns en false, y asigna a cada columna  en la propiedad datapropertyname el nombre de la columna que viene desde el origen de datos.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    • Editado Augusto1982 martes, 31 de enero de 2017 15:27
    • Marcado como respuesta Freddy Aragon martes, 31 de enero de 2017 16:12
    martes, 31 de enero de 2017 15:27

Todas las respuestas

  • Donde dice DataPropertyName, pon el nombre de la propiedad que quieres visualizar en esa columna.
    • Marcado como respuesta Freddy Aragon martes, 31 de enero de 2017 16:12
    martes, 31 de enero de 2017 14:36
  • Freddy Aragon,

    Tienes dos opciones:

    - No agregues las columnas en tiempo de diseño, establece a true la propiedad AutoGenerateColumns para que las columnas se agreguen automáticamente según el origen de datos, en caso el nombre de las columnas que retorna la consulta de selección no sea el adecuado podrás establecer un alias a cada columna:

    SELECT 
            Col1 AS [N® Remisión],
            Col2 AS [Num Detalle],
            /*...*/

    - Agrega las columnas en tiempo de diseño, establece a false la propiedad AutoGenerateColumns para que las columnas no se agreguen automáticamente según el origen de datos, y -muy importante- debes configurar la propiedad DataPropertyName para asignar el nombre de la propiedad del origen de datos que se enlaza con la columna (la propiedad se muestra en la segunda imagen que adjuntas).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Freddy Aragon martes, 31 de enero de 2017 16:12
    martes, 31 de enero de 2017 14:51
  • Hola, como te han comentado,pon el valor de la propiedad autogeneratecolumns en false, y asigna a cada columna  en la propiedad datapropertyname el nombre de la columna que viene desde el origen de datos.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    • Editado Augusto1982 martes, 31 de enero de 2017 15:27
    • Marcado como respuesta Freddy Aragon martes, 31 de enero de 2017 16:12
    martes, 31 de enero de 2017 15:27
  • Gracias Por la ayuda eso era lo que faltaba

    Gracias

    Preguntando se llega a Roma :D


    Freddy Aragon

    martes, 31 de enero de 2017 16:13