Usuario
Actualizar datagridview desde otro formulario

Pregunta
-
holas, mi pregunta es como puedo actualizar un datagridview que esta en el form1 desde el form2 (este lo abro desde el form1)?
he buscado la solucion a esta pregunta pero no la encuentro, ya probe con un actualizador despues de abrir el form2 con el showdialog y no funciona,
espero q puedan ayudarme....
- Cambiado Enrique M. Montejo domingo, 17 de febrero de 2013 11:09 Windows Forms
Todas las respuestas
-
podrias aplicar lo que comento aqui
[DataGridView] Parte 3 – Pasaje de información entre grilla distintos formularios
como veras alli comunico grids de dos formularios usando interfaces para desacoplar la comunicacion
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Hola.
Se a respondido en muchas ocasiones a esta pregunta en el foro.
Actualizar DataGridView despues de insertar datos desde otro formulario
Actualizar datagridview desde otro form
Lo que tienes que hacer es detectar el cierre del form y actualizar el origen de datos.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador -
Pero como que no entiendes, has hecho al menos el intento en el primer link que te puse justo se responde una pregunta similar a la tuya.
Tienes que tener un función que te cargue los datos en un datatable.
Public Function Cargar() As DataTable Using conn As New SqlConnection("Connection string") Dim dt As New DataTable() Dim query = "SELECT * FROM NombreTabla" Dim cmd As New SqlCommand(query, conn) Dim adap As New SqlDataAdapter(cmd) adap.Fill(dt) Return dt End Using End Function
Esa función la usarías para llenar el datagridview entonces cuando abras el form2 arias.
Dim frm As New Form2() frm.ShowDialog() DataGridView1.DataSource = Cargar()
Como veras muestras el form2 ShowDialog() y luego que se cierre el form2 este actualizara los datos.
Saludos.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador- Editado Cristian Torres jueves, 6 de diciembre de 2012 21:39
-
-
qué error podria estar cometiendo??
Pues si no se actualiza lago estas haciendo mal si no pones el código que tienes no podríamos decirte que es lo que estas haciendo mal.
Si seguiste los pasos que te indique arriba tendría que funcionarte.
Saludos.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador -
-
Pero pon el código que tienes porque si no como te podremos decir cual es el problema.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador -
ESTE ES EL CODIGO DEL FORM PRINCIPAL
Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click Dim frmEditar As New AgregarMaterial() AddHandler frmEditar.FormClosing, New FormClosingEventHandler(AddressOf frmEditar_FormClosing) frmEditar.Show() End Sub
Private Sub frmEditar_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Dim frmEdit As AgregarMaterial = TryCast(sender, AgregarMaterial) If frmEdit.DialogResult = DialogResult.OK Then Actualizador() End If End Sub
Public Sub Actualizador() Dim consulta As String = "select * from Stock" Dim dtc As DataTable dtc = New DataTable da = New OleDbDataAdapter(consulta, con) da.Fill(dtc) Me.DataGridView1.DataSource = dtc End Sub
ESTE ES EL BOTON ACEPTAR DEL FORM AGREGAR MATERIALPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim consulta As String = "Insert into Stock values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "' )" dt = New DataTable da = New OleDbDataAdapter(consulta, con) da.Fill(dt) MsgBox("Se ha agregado el registro") Me.DialogResult = DialogResult.OK Me.Close() End Sub
NO INCLUI LA CONEXION POR QUE CONSIDERO QUE NO ES NECESARIO...
BUENO Y COMO LES DIJE SE ACTUALIZA UNA VEZ, DESPUES NO, DESPUES SI, LUEGO NO Y ASI SUCESIVAMENTE
-
En el evento FormClosing llama solo el método Actualizador() lo demás quitalo.
Private Sub frmEditar_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Actualizador() End Sub
Cambia eso y comentas como te fue.
Saludos.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador -
-
Revisando el codigo veo que el codigo del insert lo tienes mal remplanzalo por el siguiente.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim consulta As String = "Insert into Stock(campo1, campo2, campo3, campo4) values(@param1, @param2, @param3, @param4)" Dim cmd As New SqlCommand(consulta, con) cmd.Parameters.AddWithValue("@param1", TextBox1.Text) cmd.Parameters.AddWithValue("@param2", TextBox2.Text) cmd.Parameters.AddWithValue("@param3", TextBox3.Text) cmd.Parameters.AddWithValue("@param4", TextBox4.Text) con.Open() Dim rowsAffected As Integer = cmd.ExecuteNonQuery() If rowsAffected > 0 Then MsgBox("Se ha agregado el registro") Else MsgBox("No se agrego el registro") End If Me.Close() End Sub
En la consulta donde dice campo1, campo2... pondras los nombres de los campos de la tabla.
Saludos.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador- Editado Cristian Torres jueves, 6 de diciembre de 2012 23:26
-
-
Es raro que te funcione es codigo que tienes del insert si es en acces tendria que ser.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim consulta As String = "Insert into Stock(campo1, campo2, campo3, campo4) values(@param1, @param2, @param3, @param4)" Dim cmd As New OleDbCommand(consulta, con) cmd.Parameters.AddWithValue("@param1", TextBox1.Text) cmd.Parameters.AddWithValue("@param2", TextBox2.Text) cmd.Parameters.AddWithValue("@param3", TextBox3.Text) cmd.Parameters.AddWithValue("@param4", TextBox4.Text) con.Open() Dim rowsAffected As Integer = cmd.ExecuteNonQuery() If rowsAffected > 0 Then MsgBox("Se ha agregado el registro") Else MsgBox("No se agrego el registro") End If Me.Close() End Sub
Ahora si tu dices que esta bien y el unico problema es que no actualiza el datagrid el codigo que tienes esta bien el problema lo veia en lo del insert.
Pero si no entonces prueba abriendo el form2 con ShowDialog().
Solo arias para abrir el form que hace el insert.
Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click Dim frm As New AgregarMaterial() frm.ShowDialog() DataGridView1.DataSource = Actualizador() End Sub
Ya no necesitarias el evento Formclosign solo arias eso y listo.
Saludos.
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador -
-
Ocurre exactamente lo mismo con el showDialog()
Entonces el problema como te lo mencione serie problema con la query del insert cambiaste ese código el del insert?
Cristian Torres
Blog Cristian Torres
El Salvador - San Salvador -