CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: see07 en Jueves 10 de Marzo de 2005, 18:28
Título: Limpiar Un Place Holder Dentro De Una Clase
Publicado por: see07 en Jueves 10 de Marzo de 2005, 18:28
Hola: Desde una clase pretendo limpiar un place holder contenido en una web form. Para esto uso el código siguiente:
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
namespace WUC_CreDes { public class Class1 { public static bool Hay_PostBack() { WUC_CreDes.WebForm1 parent1 = (WUC_CreDes.WebForm1) this.Page; parent1.Example.Controls.Clear(); return false; } } }
Donde Example es mi place holder dentro de la web form.
Al compilar me envía el error: “La palabra clave ‘this’ no es válida en una propiedad estática, un método estático ni un inicializador de campo estático”.
¿Tiene alguien alguna idea acerca de cómo puedo lograr esto?
Les agradeceré su ayuda al respecto.
Saludos. :hola:
A.L.
Título: Re: Limpiar Un Place Holder Dentro De Una Clase
Publicado por: Güorker en Viernes 11 de Marzo de 2005, 09:26
Hola see007,
Aqui hay varias cosas que deberías tener en cuenta.
-Un método estático es compartido por todas las instancias de una clase (objetos). Es decir, no existe una copia del metodo en cada objeto, por lo tanto un metodo estático no puede acceder a un atributo de un objeto concreto, porque no están en el mismo "sitio". Un metodo estático solo puede utilizar atributos estáticos de una clase.
-Por otro lado, al hacer this.Page, estas diciendo que this(en este caso Class1) tiene un atributo de tipo Page, y segun tu especificación esa clase no lo tiene.
Intentando entender lo que quieres hacer, te recomendaría que intentaras lo siguiente:
Código: Text
namespace WUC_CreDes
{
public class Class1
{
public static bool Hay_PostBack(WUC_CreDes.WebForm1 parent1)
{
parent1.Example.Controls.Clear();
return false;
}
}
}
Y para llamar a ese metodo se debería hacer lo siguiente desde el WebForm1:
Código: Text
.....
bool bHayPostBack = Class1.Hay_PostBack(this);
.....
A ver si te sirve de algo.
Saludos
Título: Re: Limpiar Un Place Holder Dentro De Una Clase
Publicado por: see07 en Viernes 11 de Marzo de 2005, 22:26
Gracias Guorker:
En realidad si me sirvió.
Si ahora dentro de un WUC quiero ejecutar:
bool que = WUC_CreDes.Class1.Hay_PostBack(this);
Debo sustituir la palabra "this" por WebForm1.ascx?
Te agradeceré tu apoyo con esto.
Saludos :hola:
A.L.
Título: Re: Limpiar Un Place Holder Dentro De Una Clase
Publicado por: Güorker en Lunes 14 de Marzo de 2005, 10:04
Hola de nuevo,
No creo que debas sustituir this po eso que dices.
Si te fijas en la definición del metodo que te pasé, el único parametro que recibe ese metodo es un objeto de tipo WUC_CreDes.WebForm1
Por lo que al llamar al metodo tienes que pasar una referencia de ese tipo. Si estas llamando a la función desde la pagina WebForm1.aspx, entonces debes dejar la palabra "this", en cambio si lo estas llamando desde un control de usuario que está incrustado en esa misma opagina, creo que deberias usar "this.Page", ya que este atributo obtiene la referencia a la pagina que contiene al control.
A ver que tal, suerte
Título: Re: Limpiar Un Place Holder Dentro De Una Clase
Publicado por: see07 en Lunes 14 de Marzo de 2005, 16:38
Hola amigo Guorker: Hica la pregunta pensando si quizás hubiese otra manera de hacerlo ya que al hacerlo asi: bool que = WUC_CreDes.Class1.Hay_PostBack(this.Page); me provoca el error: Argumento '1' no se puede convertir de'System.Web.UI.Page' a 'WUC_CreDes.WebForm1'. Estoy codificando mal alho? :unsure: A.L.
Título: Re: Limpiar Un Place Holder Dentro De Una Clase
Publicado por: see07 en Martes 15 de Marzo de 2005, 16:40
Finalmente lo logré cambiando la llamada a la función así:
bool que = WUC_CreDes.Class1.Lanza(this.Page as WUC_CreDes.WebForm1);