CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: see07 en Martes 15 de Marzo de 2005, 23:13
Título: Pasando Una Web Form Como Parametro
Publicado por: see07 en Martes 15 de Marzo de 2005, 23:13
Hola: A partir de una web form estoy enviando a ejecutar una función contenida en una clase, el código en la web form es:
bool que = WUC_CreDes.Class1.Hay_PostBack(this, w1,w1cx, w1ID, w2, w2cx, w2ID);
En la clase es código es:
public static bool Hay_PostBack(WUC_CreDes.WebForm1 parent1, string w1, string w1cx, string w1ID, string w2, string w2cx, string w2ID) { string cual = ""; cual = HttpContext.Current.Session["par1"].ToString(); parent1.Example.Controls.Clear(); if(cual == w1) { Control control = parent1.Page.LoadControl(w1cx); control.ID = w1ID; parent1.Example.Controls.Add(control); } else { Control control = parent1.Page.LoadControl(w2cx); control.ID = w2ID; parent1.Example.Controls.Add(control); } return false; }
Como ven estoy pasando a la función contenida en la clase la WebForm1 para crear en ella WUC dinámicamente.
Pensando en una segunda web form, digamos WebForm2, si desde allí envío a ejecutar la función:
bool que = WUC_CreDes.Class1.Hay_PostBack(this, w1,w1cx, w1ID, w2, w2cx, w2ID);
¿Cómo puedo hacer para que la función Hay_PostBack arriba mencionada funcione también para la WebForm2? ¿Qué cambio habría que hacerle ya que el primer parámetro es WUC_CreDes.Web Form1 parent1?
Les agradeceré sus repuestas.
Saludos. :D
A.L.
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: desgraciado en Miércoles 16 de Marzo de 2005, 03:36
declarandola como static no seria :( ???
Form1.Hay_PostBack(); para usarla
asi creo que es
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: see07 en Miércoles 16 de Marzo de 2005, 18:37
Ya está declarada como static. :D
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: Güorker en Jueves 17 de Marzo de 2005, 13:46
Hola,
Cambia el tipo del parametro.
En ve de ser de tipo WUC_CreDes.WebForm1
que sea de tipo System.Web.UI.Page
Así, como todos los Web Form heredan de esa clase, te puede funcionar.
Claro que tendras que tener en cuenta que para acceder a las propiedades de ese parametro en la función, quizá tengas que hacer un casting.
Saludos
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: see07 en Viernes 18 de Marzo de 2005, 00:50
WUC_CreDes.WebForm1 frm = (WUC_CreDes.WebForm1) parent1; } else { if(fofoi == "ASP.WebForm2_aspx") { WUC_CreDes.WebForm2 frm = (WUC_CreDes.WebForm2) parent1; } } Pero frm no es reconocido por el sistema. En qué estoy mal??? :comp:
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: Güorker en Martes 22 de Marzo de 2005, 08:37
Hola de nuevo,
a que te refieres cuando dices que frm no es reconocido por el sistema?
Quieres decir que está a null? o que te dice que no existe?
Observando tu codigo me he fijado en que declaras frm dentro del if o del else segun la cadena de fofoi, que contiene el tipo de datos de parent. Lo que pasa que si intentas hacer referencia a frm fuera del if o del else, no podrás ya que estas fuera del ambito de declaración de frm.
a ver si te sirve de algo.
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: see07 en Martes 22 de Marzo de 2005, 16:18
Hola Guorker: Siguiendo to consejo mi código queda ahora así:
Sin embargo en la última línea: frm1.parent1.Example.Controls.Clear(); Me da el error: 'WUC_CreDes.WebForm1' no contiene una definición paera 'parent1'.
Example es un place holder contenido tanto en WebForm1 como en WebForm2.
Agradeceré vuestra ayuda. :hola:
A.L.
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: lucaseto en Martes 22 de Marzo de 2005, 17:25
Creo
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: lucaseto en Martes 22 de Marzo de 2005, 17:26
Creo que es error de sintaxis Parent
y no parent1
Por que ya esta utilizando una propi edad del form y no una variable
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: Güorker en Martes 22 de Marzo de 2005, 17:27
Hola otra vez,
Parece ser que te has liado un poco con eso de los castings y demas.
Creo que para acceder al placeholder Example solo debes poner lo siguiente:
Código: Text
frm1.Example.Controls.Clear();
Ya que con lo que tu habias escrito estabas diciendo que el objeto frm1 que es de tipo WUC_CreDes.WebForm1, tiene un atributo llamado parent1.
Para que entiendas un poco esto del casting te voy a explicar lo siguiente:
Imagina que parent1 es una persona. Tu función recibe como parametro a esa persona, pero no sabes si es chico o chica.
Para ello le tocas en sus partes (podría ser como tu has puesto: if(fofoi == "ASP.WebForm1_aspx")), y de esta manera ya sabes si es chico o chica. Así que en estos momentos es cuando haces el casting; es como si dijeras:
-Mira parent1, como se que eres chico, ahora te voy a llamar juan- en el programa "frm1"; y en el caso de que sea chica se llamará "frm2"
Por lo que una vez hecho el casting, no puedes hacer: juan.persona.pelo = rubio porque juan no tiene un atributo llamado persona, sino que juan es un objeto que hereda de persona, por lo que hay que hacer juan.pelo = amarillo
Espero haberte aclarado algo y no haberte liado mas.
Saludos y espero que te funcione
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: see07 en Martes 22 de Marzo de 2005, 23:13
Muchísimas gracias por tu ayuda, amigo Guorker. Saludos. A.L. :smartass:
Título: Re: Pasando Una Web Form Como Parametro
Publicado por: Güorker en Miércoles 23 de Marzo de 2005, 08:00