none
Como pasar una variables de un form a otro en asp.net RRS feed

  • Pregunta

  • Hola foro,

    Tengo una consulta, acerca de cómo pasar el valor de un textbox a un formulario1 a un método publico de un formulario2 en asp.net v2010.

    He intentado de la siguiente forma,

    Formulario 1:

    Formulario1 form1 = new Formulario1();
    form1.Metodo(textbox.Text);

    Formulario 2: método

    public void Metodo (string dato)
    {
    gridview.Visible = true;

    ........................................................
    }

    El parámetro pasa bien, pero el problema es que me genera un error en la primera linea, con los controles del formulario2.

    Referencia a objeto no establecida como instancia de un objeto.

    Cualquier ayuda o sugerencia se las agradezco muchísimo.

    miércoles, 8 de abril de 2015 21:08

Respuestas

  • Hola de nuevo, a mi se me ocurre que puedes crear una variable del tipo Button en tu pagina y desde alli cachar el evento click, en vez de mandar llamar el metodo desde la pagina maestra, el codigo seria asi:

    En este ejemplo puse un boton en la master page que se llama btnMaster, y puse un label en el formulario que se llama lblToHide, lo que hace es que cuando le das click al boton en la pagina maestra, genera el evento click en el formulario y alli oculto el label.

           Button MasterButton;
            protected void Page_Load(object sender, EventArgs e)
            {
                MasterButton = (Button)Page.Master.FindControl("btnMaster");
                MasterButton.Click += new EventHandler(MasterButton_Click);
            }
    
            void MasterButton_Click(object sender, EventArgs e)
            {
                lblToHide.Visible = false;
            }

    Ya lo probe y sí funciona, espero que te sirva. Saludos.

    jueves, 9 de abril de 2015 15:07

Todas las respuestas

  • El error sucede porque gridview aun no esta instanciado cuando mandas llamar el método.

    Lo que puedes hace es guardar el dato en una variable de sesion, y despues verificar su valor.

    Tambien puedes usar querystrings o cookies. Todo depende de la logica de tu aplicacion.

    Saludos.

    miércoles, 8 de abril de 2015 21:20
  • Hola querido amigo recomendaría usar variables "Session" o crear un clase donde contengan variables globales y en esta clase global crearas tus variables y las usaras en las paginas que deseas.

    Deberias observar estas paginas:

    https://msdn.microsoft.com/en-us/library/ms178581%28v=vs.140%29.aspx?f=255&MSPPError=-2147217396

    http://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-Net

    http://stackoverflow.com/questions/5282677/how-to-use-session-variable-in-asp-using-c-sharp

    Saludos

    miércoles, 8 de abril de 2015 21:26
  • Gracias por contestar Horroroso Horroroso y Aldair Cosetito Coral,

    Yo he utilizado variables de sesión, y lo podría hacer en este caso normalmente, pero yo necesito que cuando se envié esa variable al formulario2, se ejecute específicamente un método del formulario2, entonces ahí no sabría como hacer con la variable de sesión, por eso fue que intente enviar el parámetro fue al método.


    miércoles, 8 de abril de 2015 21:38
  • Quiero entender entonces que tienes Abierto el formularo1 y que quieres que se ejecute el metodo del formulario2, probablemente teniendo tambien abierto el formulario2?

    es decir, desde el formulario1 quieres ocultar un gridview en el formulario2?

    Saludos.

    miércoles, 8 de abril de 2015 21:44
  • Ok, me especifico mejor, el formulario1 es la masterpage, y desde ahi ingreso en un textbox un parametro de busqueda, el cual al darle clic a un boton lo debe enviar al metodo de busqueda del formulario2 que inicialmente hace visible el gridview donde se van amostrar los resultados.
    miércoles, 8 de abril de 2015 21:59
  • hola

    si vas a psar info de un forma a otro usa

    Cross-Page Posting in ASP.NET Web Pages

    con esto podras pasar la info de un control al otro wevform, sin usar ninguna Session

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 8 de abril de 2015 22:23
  • >>el formulario1 es la masterpage, y desde ahi ingreso en un textbox un parametro de busqueda, el cual al darle clic a un boton lo debe enviar al metodo de busqueda del formulario2

    porque llamas formulario1 a una masterpage?, una masterpage es na masterpage no es un formulario, eso genera confusion

    si la idea es acceder a los datos de la master usarias

    How to: Reference ASP.NET Master Page Content

    en resumen usas el Master.FindControl() para localizar la info del textbox que esta en la master

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 8 de abril de 2015 22:26
  • Hola de nuevo, a mi se me ocurre que puedes crear una variable del tipo Button en tu pagina y desde alli cachar el evento click, en vez de mandar llamar el metodo desde la pagina maestra, el codigo seria asi:

    En este ejemplo puse un boton en la master page que se llama btnMaster, y puse un label en el formulario que se llama lblToHide, lo que hace es que cuando le das click al boton en la pagina maestra, genera el evento click en el formulario y alli oculto el label.

           Button MasterButton;
            protected void Page_Load(object sender, EventArgs e)
            {
                MasterButton = (Button)Page.Master.FindControl("btnMaster");
                MasterButton.Click += new EventHandler(MasterButton_Click);
            }
    
            void MasterButton_Click(object sender, EventArgs e)
            {
                lblToHide.Visible = false;
            }

    Ya lo probe y sí funciona, espero que te sirva. Saludos.

    jueves, 9 de abril de 2015 15:07
  • Hola Horroroso Horroroso, hasta ahora pude implementar el código que me indicaste, y me funciono perfecto.

    Te agradezco muchísimo, haberte tomado el tiempo en ayudarme. Muchas, muchas gracias. 

    viernes, 10 de abril de 2015 13:53