Usuario
Recorrer DATAGRIDVIEW e ir actualizando datos de las filas

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()
NextComo 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
Todas las respuestas
-
Hola:
En un Form con 1 DataGridView y 1 Button, copia y pega el siguiente codigoOption Explicit On
Option Strict On
Imports System.Data.SqlClientPublic Class Form1
Public mFila As DataGridViewRowPrivate 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 SubPrivate 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 ClassEn un Form con 2 textBox y 1 Button, copia y pega el siguiente codigo
Public Class Form2
Public mFrmPadre As Form1
Public mFila As DataGridViewRowPrivate 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 SubPrivate 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 ClassUn saludo desde Bilbo
Carlos -
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.
-
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 ejemploUn saludo desde Bilbo
Carlos -
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.
-
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 -
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 loFilaUn saludo desde Bilbo
Carlos