none
Recorrer DATAGRIDVIEW e ir actualizando datos de las filas RRS feed

  • Pregunta

  • Hola buenas tardes estoy creando una aplicación en Visual Basic. Donde tengo dos Form en el primero tengo un DataGridview en el cual tengo cierta informacion, lo que requiero es saber como puedo recorrer ese DataGridview al momento de dar clic en un botón pero necesito que al dar clic al botón me muestre en en el segundo form los datos que se encuentren en la primera fila del DataGridview y hay poder modificar los valores y al momento de dar clic en un botón en el segundo form se cambien los datos de este form por los datos de la segunda fila del DataGridview del primer form.

    Lo estoy recorriendo con un y así tomando los datos pero no me funciona.

    For Each row As DataGridViewRow In Form1.DataGridView3.Rows

                        Dim fila As Integer = row.Index
                        TextBox1.Text = Form1.DataGridView3.Rows(fila).Cells(0).Value
                        TextBox2.Text = Form1.DataGridView3.Rows(fila).Cells(1).Value
                        TextBox3.Text = Form1.DataGridView3.Rows(fila).Cells(3).Value
                        TextBox4.Text = Form1.DataGridView3.Rows(fila).Cells(5).Value
                        TextBox5.Text = Form1.DataGridView3.Rows(fila).Cells(7).Value
                        TextBox6.Text = Form1.DataGridView3.Rows(fila).Cells(9).Value
                        'Continue For
                        Actualizar()
                    Next

    Como verán no soy muy bueno en esto en esto. Gracias de ante mano.

    • Cambiado Karen Malagón miércoles, 18 de noviembre de 2015 21:53 Windows Forms issue
    martes, 17 de noviembre de 2015 19:59

Todas las respuestas

  • Hola:
    En un Form con 1 DataGridView y 1 Button, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form1
        Public mFila As DataGridViewRow

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Dim msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    ' crear adaptador
                    Dim DataAdapter As New SqlDataAdapter("Select LastName, FirstName From Employees", loConexion)
                    Dim DataTable As New DataTable
                    DataAdapter.Fill(DataTable)
                    Me.DataGridView1.DataSource = DataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
            Using loForm As New Form2
                loForm.mFrmPadre = Me
                loForm.mFila = loFila
                loForm.ShowDialog()
            End Using
        End Sub
    End Class

    En un Form con 2 textBox y 1 Button, copia y pega el siguiente codigo

    Public Class Form2
        Public mFrmPadre As Form1
        Public mFila As DataGridViewRow

        Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.TextBox1.Text = mFila.Cells("LastName").Value.ToString()
            Me.TextBox2.Text = mFila.Cells("FirstName").Value.ToString()
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim loFila As DataGridViewRow = mFrmPadre.DataGridView1.CurrentRow()
            loFila.Cells("LastName").Value = Me.TextBox1.Text
            loFila.Cells("FirstName").Value = Me.TextBox2.Text
            MessageBox.Show("Datos Cambiados")
            Me.Close()
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos

    miércoles, 18 de noviembre de 2015 9:56
  • Hola buenas tardes primero que nada gracias por tu información si me sirvió, pero tengo una duda, si al momento de recorrer el DataGridView nada mas hay una fila de datos, como hago para detener, es decir que al momento de actualizar si nada mas hay una fila que se salga de ese form y vuelva al form principal ya que lo que me pasa es que pasa la información de la única fila y después de dar clic al botón me vuelve a jalar el form 2 pero con datos vacíos ya que nada mas hay una fila.

    Otra cosa como hago para que al momento de ir pasando los datos los pueda ir actualizando uno por uno ya que ahorita me esta actualizando todos con la información que pongo, es decir si tengo 5 filas paso la primera y la actualizo pero se actualizan todas al mismo tiempo con la información que pongo.

    En el form 2 donde yo voy cargando los datos que voy jalando del  DataGridView del form 1, primero si solo es una fila la pasa directo y la actualizo sin problemas pero si son dos o mas hay es el detalle ya que actualiza todas con la misma información, como puedo ir no se como decirlo poner una pausa para que me permita actualizar de fila por fila.

    Muchas gracias por tu ayuda. Saludos quedo atento.

    miércoles, 18 de noviembre de 2015 19:22
  • Hola:
    En el ejemplo que te he puesto anteriormente, cuando se hace click en el boton del Form1, se pasan los datos de la fila actual al Form2, y cuando se hace click en el boton del Form2, se actualiza la fila actual del Form1.
    Lo que me explicas no me "CUADRA" con este ejemplo

    Un saludo desde Bilbo
    Carlos

    jueves, 19 de noviembre de 2015 8:40
  • Hola:

    Si mira lo que pasa es lo siguiente, al momento de cargar el DataGridView en el form 1 automáticamente se queda seleccionada una celda y como dices tu al dar clic se pasan los datos de esa fila al form 2. Bueno lo que yo estoy tratando de hacer es que se seleccione ni una celda al cargar el DataGridView si no que tengo un textbox y hay pongo un dato que busco en el DataGridView y al al encontrarlo que me seleccione la celda y que eso datos pertenecientes a esa celda me los pase al form 2 para hay actualizarlos. Eso es una cosa que requiero.

    Otra es por ejemplo que si hay mas de uno dato que se repite en el DataGridView que se pasen de uno por uno los datos de las filas correspondientes para así poder actualizarlos uno por uno.

    Y que los cambios se vean reflejados obviamente en el DataGridView del form 1.

    Espero de esa forma me aya explicado, espero me puedas entender y así poderme ayudar con esto.

    Bueno muchas gracias,  Saludos.

    jueves, 19 de noviembre de 2015 15:09
  • Hola utilizando tu codigo le realice unas modificaciones y esta asi como lo pongo.

    Lo que yo requiero es tengo dos form en el primero tengo un datagridview, y boton en el segundo form tengo varios controles como se ve en el codigo. Lo que estoy tratando de hacer es que al momento de dar clic en el boton del form 1 me pase los datos de la fila 0 del datagridview a los controles del form 2, en el form dos tengo un boton que es para actulizar,

    Cuando le doy clic a ese boton se actualiza los registros de la primera fila del datagridview en el form 1 y se muestran los registros de la segunda fila.

    El detalle aqui es que al momento de actualizar los datos de la segunda fila no se actualizan si no que se actualizan los datos de la primera fila, ya que esta parte de codigo me mantiene siempre en la primer fila.

    Dim loFila As DataGridViewRow = mFrmPadre.DataGridView3.CurrentRow()

    Como puedo hacer para que esa varible loFila cambie su valor a la siguiente fila del datagridview.

    Espero me puedas ayudar con esto porfavor. espero me aya explicado bien,

    Gracias de antemano. saludos

    FORM 1

    Public mFila As DataGridViewRow

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            For Each row As DataGridViewRow In Me.DataGridView3.Rows
                Dim fila As Integer
                fila = row.Index

                Using loForm As New Form2
                    loForm.mFrmPadre = Me
                    loForm.mFila = row
                    loForm.ShowDialog()
                End Using
            Next
    End Sub

    FORM 2
    Public mFrmPadre As Form1
    Public mFila As DataGridViewRow

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.TextBox1.Text = mFila.Cells("1").Value.ToString()
    Me.TextBox2.Text = mFila.Cells("2").Value.ToString()
    Me.TextBox3.Text = mFila.Cells("3").Value.ToString()
    Me.TextBox4.Text = mFila.Cells("6").Value.ToString()
    Me.MaskedTextBox1.Text = mFila.Cells("8").Value.ToString()
    Me.MaskedTextBox2.Text = mFila.Cells("11").Value.ToString()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim loFila As DataGridViewRow = mFrmPadre.DataGridView3.CurrentRow()
            loFila.Cells("1").Value = Me.TextBox1.Text
            loFila.Cells("2").Value = Me.TextBox2.Text
            loFila.Cells("3").Value = Me.TextBox3.Text
            loFila.Cells("6").Value = Me.TextBox3.Text
            loFila.Cells("8").Value = Me.MaskedTextBox1.Text
            loFila.Cells("11").Value = Me.MaskedTextBox2.Text
            MessageBox.Show("Datos Cambiados")
            Me.Close()
    End Sub

    martes, 24 de noviembre de 2015 18:08
  • Hola:

    > Como puedo hacer para que esa varible loFila cambie su valor a la siguiente fila del datagridview. <
    La varible loFila tiene los valores de la fila actual.
    Cambia de fila actual y cambiaran los valores de la varible loFila

    Un saludo desde Bilbo
    Carlos

    miércoles, 25 de noviembre de 2015 9:31