none
llenar dataGridView con textbox

    Question

  • hola, soy nuevo programando en VB.net y quiero saber como llenar un dgv con textbox, tengo este codigo que pasa los textbox al dgv

    For Each row As DataGridViewRow In frmFactura.dgfactura.Rows  'agregar los datos en las celdas correspondientes
                row.Cells("id_producto").Value = TextBox5.Text          'del dataGridView de el formulario frmFactura
                row.Cells("Nombre").Value = TextBox3.Text
                row.Cells("tam").Value = TextBox4.Text
                row.Cells("precio").Value = TextBox2.Text
                row.Cells("cant").Value = TextBox1.Text
                row.Cells("tt").Value = Val(TextBox1.Text) * Val(TextBox2.Text)

            Next

    pero al ingresar otros valores solo los sustituye porfavor necesito ayuda si alguien me puede decir como hacerlo por favor

    se los agradesco de ante mano

    Thursday, April 21, 2011 7:06 AM

Answers

  • o sea tienes tienes controles de texto y necesitas insertar una nueva fila con estos ?

     

    si es asi usa

    Dim calculo As Integer = Val(TextBox1.Text) * Val(TextBox2.Text)

     Dim row As String() = New String() {TextBox5.Text, TextBox3.Text, TextBox4.Text, TextBox2.Text, TextBox1.Text, CStr(calculo)}

     dataGridView.Rows.Add(row)

     

    como veras cada posicion del array pertenece a una columna del grid

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Ooxxii Thursday, April 21, 2011 6:36 PM
    Thursday, April 21, 2011 12:54 PM
  • "OmarLlanos" preguntó:

    > hola Enrique Martínez.
    >
    > al hacer eso mi datagridview puede devolver los datos con su propiedd datasourse
    >
    > hice algo parecido y no me devuelve nada en su propiedad datasourse :(


    Hola Omar:

    Para que la propiedad DataSource del control DataGridView te devuelva un valor distinto de Nothing, hay que ver el valor que previamente le has asignado a dicha propiedad. ¿Le has asignado algún valor válido?

    Desde luego, si le asignas un valor a la propiedad DataSource, no podrás posteriormente añadir filas manualmente a dicho control, tal y como muestra el ejemplo que has indicado en tu mensaje.

    Podrías añadirle el valor de un array, pero no podrás ver sus valores en el control:

        ' Creamos una matriz con los datos de los distintos
        ' controles TextBox, en el mismo orden que tengan
        ' las columnas
        '
        Dim values() As Object = {TextBox5.Text, TextBox3.Text, TextBox4.Text, TextBox2.Text, TextBox1.Text}
    
        ' Enlazamos el control DataGridView con la matriz de valores
        '
        DataGridView1.DataSource = values
    

    Cuando posteriormente desees recuperar el valor de la propiedad DataSource, lo harías de la siguiente manera:

       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Try
                ' Referenciamos la propiedad DataSource
                Dim obj As Object = DataGridView1.DataSource
    
                If (Not obj Is Nothing) Then
    
                    ' Obtenemos el System.Type de la propiedad DataSource.
                    Dim ty As Type = obj.GetType()
    
                    If (ty.IsArray) Then
                        ' El valor es una matriz de valores.
                        Dim values As Array = DirectCast(obj, Array)
                       
                        For Each value As Object In values
                            MessageBox.Show(value.ToString())
                        Next
    
                    Else
                        MessageBox.Show(String.Format("El valor de la propiedad DataSource es del tipo: '{0}'.", ty.FullName))
    
                    End If
    
                Else
                    MessageBox.Show("El valor de la propiedad DataSource es Nothing.")
    
                End If
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            End Try
    
        End Sub
    

    Normalmente, a la propiedad DataSource del control DataGridView se le asigna un origen de datos válido, como puede ser un objeto DataTable.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    Saturday, September 05, 2015 7:24 AM
    Moderator

All replies

  • o sea tienes tienes controles de texto y necesitas insertar una nueva fila con estos ?

     

    si es asi usa

    Dim calculo As Integer = Val(TextBox1.Text) * Val(TextBox2.Text)

     Dim row As String() = New String() {TextBox5.Text, TextBox3.Text, TextBox4.Text, TextBox2.Text, TextBox1.Text, CStr(calculo)}

     dataGridView.Rows.Add(row)

     

    como veras cada posicion del array pertenece a una columna del grid

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Ooxxii Thursday, April 21, 2011 6:36 PM
    Thursday, April 21, 2011 12:54 PM
  • Hola:

    Si ejecutas ese bucle, todas las columnas del control DataGridView tendrán el mismo valor, es decir, la columna Id_Producto tendrá el mismo valor en todas las filas, al igual que las columnas Nombre, Tam, Precio, Cantidad y TT.

    Si tu intención es crear una nueva fila para insertar los valores de los controles TextBox, lo puedes hacer de la siguiente manera, siempre y cuando el control DataGridView no se encuentre enlazado a un origen de datos, claro está:

            ' Creamos una matriz con los datos de los distintos
            ' controles TextBox, en el mismo orden que tengan
            ' las columnas
            '
            Dim values() As Object = {TextBox5.Text, TextBox3.Text, TextBox4.Text, TextBox2.Text, TextBox1.Text}

            ' Añadimos una nueva fila al control DataGridView
            '
            Dim index As Integer = DataGridView1.Rows.Add()

            ' Referenciamos la nueva fila
            '
            Dim currentRow As DataGridViewRow = DataGridView1.Rows(index)

            ' Añadimos los valores a las celdas de la fila
            '
            currentRow.SetValues(values)

    Un saludo


    Enrique Martínez
      [MS MVP - VB]



    Thursday, April 21, 2011 1:01 PM
    Moderator
  • Hola buenas noches, una pregunttota yo tengo una duda similar, lo que pasa es uqe quiero que desde un form donde contienen desde textbox, label, combobox, al llenarlas se llene el datagridview que tengo en otro formulario, pero la verdad no se como hacerle... no se si me entendi... help!!!!
    Wednesday, March 13, 2013 4:06 AM
  • eso es mas facil los controles  son variables publicas asi que solo pones el nombr del form.textbox1.text en el lugar donde vas a llenar tu datagridview, obiamente el formulario que tienes los controles tiene que estr cargado

    Friday, September 04, 2015 8:54 PM
  • Hola:

    Si ejecutas ese bucle, todas las columnas del control DataGridView tendrán el mismo valor, es decir, la columna Id_Producto tendrá el mismo valor en todas las filas, al igual que las columnas Nombre, Tam, Precio, Cantidad y TT.

    Si tu intención es crear una nueva fila para insertar los valores de los controles TextBox, lo puedes hacer de la siguiente manera, siempre y cuando el control DataGridView no se encuentre enlazado a un origen de datos, claro está:

            ' Creamos una matriz con los datos de los distintos
            ' controles TextBox, en el mismo orden que tengan
            ' las columnas
            '
            Dim values() As Object = {TextBox5.Text, TextBox3.Text, TextBox4.Text, TextBox2.Text, TextBox1.Text}

            ' Añadimos una nueva fila al control DataGridView
            '
            Dim index As Integer = DataGridView1.Rows.Add()

            ' Referenciamos la nueva fila
            '
            Dim currentRow As DataGridViewRow = DataGridView1.Rows(index)

            ' Añadimos los valores a las celdas de la fila
            '
            currentRow.SetValues(values)

    Un saludo


    Enrique Martínez
      [MS MVP - VB]



    hola Enrique Martínez.

    al hacer eso mi datagridview puede devolver los datos con su propiedd datasourse

    hice algo parecido y no me devuelve nada en su propiedad datasourse :(

    Friday, September 04, 2015 8:56 PM
  • "OmarLlanos" preguntó:

    > hola Enrique Martínez.
    >
    > al hacer eso mi datagridview puede devolver los datos con su propiedd datasourse
    >
    > hice algo parecido y no me devuelve nada en su propiedad datasourse :(


    Hola Omar:

    Para que la propiedad DataSource del control DataGridView te devuelva un valor distinto de Nothing, hay que ver el valor que previamente le has asignado a dicha propiedad. ¿Le has asignado algún valor válido?

    Desde luego, si le asignas un valor a la propiedad DataSource, no podrás posteriormente añadir filas manualmente a dicho control, tal y como muestra el ejemplo que has indicado en tu mensaje.

    Podrías añadirle el valor de un array, pero no podrás ver sus valores en el control:

        ' Creamos una matriz con los datos de los distintos
        ' controles TextBox, en el mismo orden que tengan
        ' las columnas
        '
        Dim values() As Object = {TextBox5.Text, TextBox3.Text, TextBox4.Text, TextBox2.Text, TextBox1.Text}
    
        ' Enlazamos el control DataGridView con la matriz de valores
        '
        DataGridView1.DataSource = values
    

    Cuando posteriormente desees recuperar el valor de la propiedad DataSource, lo harías de la siguiente manera:

       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Try
                ' Referenciamos la propiedad DataSource
                Dim obj As Object = DataGridView1.DataSource
    
                If (Not obj Is Nothing) Then
    
                    ' Obtenemos el System.Type de la propiedad DataSource.
                    Dim ty As Type = obj.GetType()
    
                    If (ty.IsArray) Then
                        ' El valor es una matriz de valores.
                        Dim values As Array = DirectCast(obj, Array)
                       
                        For Each value As Object In values
                            MessageBox.Show(value.ToString())
                        Next
    
                    Else
                        MessageBox.Show(String.Format("El valor de la propiedad DataSource es del tipo: '{0}'.", ty.FullName))
    
                    End If
    
                Else
                    MessageBox.Show("El valor de la propiedad DataSource es Nothing.")
    
                End If
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            End Try
    
        End Sub
    

    Normalmente, a la propiedad DataSource del control DataGridView se le asigna un origen de datos válido, como puede ser un objeto DataTable.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    Saturday, September 05, 2015 7:24 AM
    Moderator