none
como pasar datos de un texbox a un datagridview al hacer click RRS feed

  • Pregunta

  • hola amigos quisiera saber como se pasan los datos de un texbox a un datagridview al hacer click en un boton

    ejemplo si tengo texbox=juan

    quiero que al hacer click me lo pase a una culumna de un datagridview,

     este es el codigo que estoy usando pero no me funciona,

    DataGridView1.Item(2, DataGridView1.CurrentRow.Index).Value = nombre.Text

    ayuda porfavor

    viernes, 18 de febrero de 2011 10:00

Respuestas

  • hola

    en realidad depende si el DataGridView se encuantra enlazado a datos previamente o no

    si no esta cargado con datos podrias usar el Add()

    DataGridView1.Rows.Add()


    como veras podrias ser
    Dim newRow(2) As String
    newRow(0) = TextBox1.Text
    newRow(1) = TextBox2.Text

    DataGridView1.Rows.Add(newRow )

    en este caso el grid tendra solo dos columnas


    pero si estaba previamente unida a datos deberas agregarlos a estos

    Dim dr As DataRow = dt.NewRow()
    dr("Column1") = TextBox1.Text
    dr("Column2") = TextBox1.Text

    dt.Rows.Add(dr);

    DataGridView1.DataSource = dt

    o sea es al datatable donde lo agregas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 18 de febrero de 2011 12:18
  • Hola:

    Con independencia que el control DataGridView se encuentre o no enlazado a un origen de datos, los datos de los controles TextBox se pueden pasar de la siguiente manera:

            ' Guardamos en un array alfanumérico, los valores
            ' de todos los controles TextBox que queremos
            ' pasar al control DataGridView, en el mismo orden
            ' en el que apareceran en las columnas de dicho control.
            '
            Dim values() As String = {TextBox1.Text, TextBox2.Text, Nothing, Nothing, TextBox3.Text, Nothing}

            ' Referenciamos la fila actual del control DataGridView,
            ' donde se supone vamos a insertar los valores de los
            ' distintos controles TextBox.
            '
            Dim currentRow As DataGridViewRow = DataGridView1.CurrentRow

            Dim bln As Boolean

            If (currentRow IsNot Nothing) Then _
                bln = currentRow.SetValues(values)

            If (bln) Then
                MessageBox.Show("Se han pasado los datos al control DataGridView.")

            Else
                MessageBox.Show("No se han pasado los datos.")

            End If

    Fíjate que tiene que existir una fila activa, porque si no existe una fila activa, no sé qué valores vas a pasar, con independencia que estos venga de un control TextBox o de un control DateTimePicker.

    ¡Hombre! Si el control DataGridView se encuentra enlazado a un origen de datos, y existe una columna que es la clave principal del objeto DataTable, o no admite valores duplicados, o no se permite valores NULL, tendrás que procurar que los valores que deseas pasar no incumplan las restricciones impuestas. Pero esto no es un problema de la manera de pasar los datos, si no de los valores de los datos propiamente dichos.

    Como verás, una forma fácil, sencilla, eficaz y elegante de pasar los datos desde unos controles TextBox a la fila actual de un control DataGridView. :-)

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    viernes, 18 de febrero de 2011 14:39
    Moderador
  • "Leandro Tuttini" escribió:

    > en realidad depende si el DataGridView se encuantra enlazado a datos previamente o no

    ¡Ay Dios mío! ¿Tú estás seguro de lo que acabas de escribir?

    Me parece a mí que no es necesario saber si el control DataGridView se encuentra o no enlazado a un origen de datos, para pasar los datos de un control TextBox a una celda cualquiera de una fila determinada.

    ¿Que pasa? Si el control DataGridView se encuentra enlazado a un origen de datos, ¿ya no se pueden escribir directamente datos en él? ¿Tiene que hacerse a través del objeto DataTable, o a través de tu objeto favorito, un objeto List(Of T)?

    ¡Hombre! Si el control DataGridView es de sólo lectura, me callo, pero si no lo es, me parece a mí que no es del todo correcto lo que acabas de escribir.

    Enrique Martínez
     [MS MVP - VB]

    viernes, 18 de febrero de 2011 14:49
    Moderador

Todas las respuestas

  • hola

    en realidad depende si el DataGridView se encuantra enlazado a datos previamente o no

    si no esta cargado con datos podrias usar el Add()

    DataGridView1.Rows.Add()


    como veras podrias ser
    Dim newRow(2) As String
    newRow(0) = TextBox1.Text
    newRow(1) = TextBox2.Text

    DataGridView1.Rows.Add(newRow )

    en este caso el grid tendra solo dos columnas


    pero si estaba previamente unida a datos deberas agregarlos a estos

    Dim dr As DataRow = dt.NewRow()
    dr("Column1") = TextBox1.Text
    dr("Column2") = TextBox1.Text

    dt.Rows.Add(dr);

    DataGridView1.DataSource = dt

    o sea es al datatable donde lo agregas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 18 de febrero de 2011 12:18
  • Hola:

    Con independencia que el control DataGridView se encuentre o no enlazado a un origen de datos, los datos de los controles TextBox se pueden pasar de la siguiente manera:

            ' Guardamos en un array alfanumérico, los valores
            ' de todos los controles TextBox que queremos
            ' pasar al control DataGridView, en el mismo orden
            ' en el que apareceran en las columnas de dicho control.
            '
            Dim values() As String = {TextBox1.Text, TextBox2.Text, Nothing, Nothing, TextBox3.Text, Nothing}

            ' Referenciamos la fila actual del control DataGridView,
            ' donde se supone vamos a insertar los valores de los
            ' distintos controles TextBox.
            '
            Dim currentRow As DataGridViewRow = DataGridView1.CurrentRow

            Dim bln As Boolean

            If (currentRow IsNot Nothing) Then _
                bln = currentRow.SetValues(values)

            If (bln) Then
                MessageBox.Show("Se han pasado los datos al control DataGridView.")

            Else
                MessageBox.Show("No se han pasado los datos.")

            End If

    Fíjate que tiene que existir una fila activa, porque si no existe una fila activa, no sé qué valores vas a pasar, con independencia que estos venga de un control TextBox o de un control DateTimePicker.

    ¡Hombre! Si el control DataGridView se encuentra enlazado a un origen de datos, y existe una columna que es la clave principal del objeto DataTable, o no admite valores duplicados, o no se permite valores NULL, tendrás que procurar que los valores que deseas pasar no incumplan las restricciones impuestas. Pero esto no es un problema de la manera de pasar los datos, si no de los valores de los datos propiamente dichos.

    Como verás, una forma fácil, sencilla, eficaz y elegante de pasar los datos desde unos controles TextBox a la fila actual de un control DataGridView. :-)

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    viernes, 18 de febrero de 2011 14:39
    Moderador
  • "Leandro Tuttini" escribió:

    > en realidad depende si el DataGridView se encuantra enlazado a datos previamente o no

    ¡Ay Dios mío! ¿Tú estás seguro de lo que acabas de escribir?

    Me parece a mí que no es necesario saber si el control DataGridView se encuentra o no enlazado a un origen de datos, para pasar los datos de un control TextBox a una celda cualquiera de una fila determinada.

    ¿Que pasa? Si el control DataGridView se encuentra enlazado a un origen de datos, ¿ya no se pueden escribir directamente datos en él? ¿Tiene que hacerse a través del objeto DataTable, o a través de tu objeto favorito, un objeto List(Of T)?

    ¡Hombre! Si el control DataGridView es de sólo lectura, me callo, pero si no lo es, me parece a mí que no es del todo correcto lo que acabas de escribir.

    Enrique Martínez
     [MS MVP - VB]

    viernes, 18 de febrero de 2011 14:49
    Moderador