PDA

Ver la Versión Completa : refrescar un datagrid desde otro formulario en vb.net


Mayorlin
16-07-2004, 11:09:48
Hola buenas, estoy realizando una aplicacion e vb.net y tengo el siguiente problemilla, tengo un formulario con un datagrid y para añadirle registros abro otro formulario distinto, y el problema esta ahí, desde el formulario en el que agrego quiero que me refresque el datagrid cada vez que añado un nuevo registro.
e probado con lo siguiente pero me dice algo asi como que no esta declarado.
form1.datagrid1.datasource=odataset1.tables("Nombre tabla")
pero esono me deja.
Gracias por la ayuda de antemano

__hector
16-07-2004, 15:00:02
Son paginas diferentes? No puedes acceder a otra pagina desde una primera como si esta fuese un objeto declarado en la misma pagina actual. Yo creo que te sirve mas llamar a esta primera con algun parametro en el querystring para que vuelva a hacer un databind del grid.

Igual danos un poco mas de datos/codigo sobre el escenario de la aplicacion, a ver como se puede...

Mayorlin
21-07-2004, 17:24:35
tengo dos formularios distintos.
uno principal y otro secundario.
en el principal tengo un datagrid q me muestra el contenido de una base de datos.
Y en el segundo gestiono esa misma base de datos, osea añado, elimino y modifico registros.
Lo que quiero es que cada vez que desde el segundo formulario realice una actualizacion o modificacion en la base de datos desde el segundo formulario, se me actualice el datagrid delprimer formulario(formulario principal).

no se si me abras entendido es que es mas difcil de esplicar que de ver.

el problema que tengo es que desde el formulario principal llamo al otro formulario(secundario) y desde el principal puedo acceder a los componentes del otro formulario,osea a sus textbox y demas, pero desde el otro formulario no puedo acceder a los componentes del formulario principal.

gracias

__hector
21-07-2004, 22:08:53
Ah caray, y yo pensaba que hablabas de ASP.NET, por eso te decia lo de las paginas.

Hay varias formas de realizar eso que te propones. Una, que es simple, es manejar el evento cuando el segundo formulario se cierra, para efectuar el refresco de los datos del grid que esta en el primero. Otro puede ser lanzar un evento, que puede ser escuchado por el primero para refrescar los datos automaticamente. En fin, mil formas, no se cual te parece mejor.

Mayorlin
22-07-2004, 19:28:09
ya se que hay muchas formas el problema lo tengo en que desde el segundo formulario no me permite modificar el primero, en el que tengo que hacer la actualizacion.

desde el form1 puedo modificar el dos, de hecho le llamo y lo modifico, pero desde el dos no puedo hacer nada con el uno, ese es el problema.

Gracias por la ayuda, espero que aqui te lo aya esplicado mejor :)

__hector
22-07-2004, 23:07:42
Bien, pero no me dijiste cual forma te gustaria implementar. Una breve: para llamar al segundo formulario declaras un objeto del tipo del formulario que vas a construir, e invocas su metodo show. Puedes implementar en el codigo del formulario primero una rutina que maneje el evento close del formulario2 (private sub talfuncion...... handles nombreobjeto.evento), y en el mismo entonces implementar el refresco del grid.

Te vale esa ?

Mayorlin
29-07-2004, 16:13:09
Gracias por la ayuda lo e probado y si que sirve, porsi a alguien le pudiera ayudar esto tb, lo que realizo yo es usar el metodo validate del formulario 1 asi me ahorro el tener que actualizar el datagrid al cargar el formulario y tb me actualiza el datagrid cuando ciero el formulario2.

jaudisio
31-07-2007, 16:02:30
Esto es muy importante, por lo que se necesito saber como pueder con un evento en el form1 se ejecute cuando cierro el form 2.

Alguien ha dicho que utiliza el metodo validate() por lo que le pido por favor descriva los pasos para poder entederlos. desde ya gracias.

__hector
01-08-2007, 20:02:20
Ok, dime si esta es tu situacion:

Tienes dos formularios, FormA, y FormB. Desde el FormA creas una instancia del FormB y lo muestras. Quieres que, cuando el usuario cierre el FormB, el codigo que esta en un metodo del FormA se ejecute.

Dos formas de hacer esto: utiliza ShowDialog(), que garantiza que cuando cierres el FormB, el codigo se siga ejecutando en FormA justo despues de la linea en que lo llamaste. Si conoces ShowDialog() sabras que tiene sus 'desventajas'.

Otra forma seria agregar un EventHandler al FormA que maneje el evento closing del FormB. No entrare en detalles tecnicos, pero deberias documentarte algo al respecto (event handling, deletages)

Seria algo mas o menos asi (debes consultar los nombres correctos de metodos y propiedades, pues lo estoy escribiendo de memoria):


private void FormA_Load()
{
Form formB = new FormB();

// Aqui va el nombre del metodo que manejaria el evento de cierre. puede tener cualquier nombre.
formB.Closing += new CancelEventHandler(formB_Closing);
...
}

private void formB_Closing(object sender, CancelEventArgs e)
{
// codigo
}