Foros del Web » Programando para Internet » ASPX (.net) »

Agregar controles dinamicamente. C#

Estas en el tema de Agregar controles dinamicamente. C# en el foro de ASPX (.net) en Foros del Web. Hola buenas tardes, Tengo una clase que me crea un Control segun el tipo que le indique, con una funcion que devuelve true si se ...
  #1 (permalink)  
Antiguo 16/05/2006, 12:00
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Agregar controles dinamicamente. C#

Hola buenas tardes,

Tengo una clase que me crea un Control segun el tipo que le indique, con una funcion que devuelve true si se ha creado correctamente, el codigo de dicha funcion es algo asi:

Código:
		public bool CreaControl(int Ancho, int Alto, string Nombre, string Texto, TipoControl Tipo, string Estilo, ref WebControl MiControl)
		{
			switch(Tipo)
			{
				case TipoControl.Boton:
					MiControl = new Button();
					MiControl.ID = Nombre;
					MiControl.Attributes["Text"] = Texto;
					MiControl.Attributes["value"] = Texto;
					MiControl.Width = Ancho;
					MiControl.Height = Alto;
					//MiControl.Style = Estilo;
				break;

				case TipoControl.CajaTexto:
					MiControl = new TextBox();
					MiControl.ID = Nombre;
					MiControl.Attributes.Add("Text", Texto);					
					MiControl.Width = Ancho;
					MiControl.Height = Alto;
					//MiControl.Style = Estilo;
				break;
			}
			return true;
		}

Bueno, creo el objeto de dicha clase (Naturalmente solo he puesto la funcion no voy a poner todo el codigo de la clase, que solo lleva demás una enumeracion llamada TipoControl), y creo el Control sin problemas, pero el control me aparece sin el texto asignado y sin el Value... ¿Alguien sabe por qué es?, el boton me aparece ee.

Código:
private WebControl objControl;
private System.Web.UI.Control objFormulario;
private CreaControles objCreador;

		private System.Web.UI.HtmlControls.HtmlGenericControl Capa;
private void Page_Load(object sender, System.EventArgs e)
{
	objFormulario = this.FindControl("Form1");
	objCreador = new CreaControles();

	if (objCreador.CreaControl(20, 30, "idBoton", "Un Boton", CreaControles.TipoControl.Boton,"", ref objControl))
		{
		Capa = new HtmlGenericControl("div");
		Capa.Controls.Add(objControl);
		objFormulario.Controls.Add(Capa);
	}
}
__________________
Charlie.
  #2 (permalink)  
Antiguo 16/05/2006, 12:33
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Porque ésta colocando ésto: ??

Cita:
...
MiControl.Attributes["Text"] = Texto;
MiControl.Attributes["value"] = Texto;
... te podría quedar mejor así:

Cita:
...
MiControl.Text = Texto;
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net

Última edición por RootK; 16/05/2006 a las 12:40
  #3 (permalink)  
Antiguo 17/05/2006, 01:41
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Por que si te das cuenta " MiControl " es un objeto del tipo WebControl, el cual no tiene la propiedad Text de primera mano, por lo que intento modificarselo através de .Attributes ¿Me he explicado?

En fin, haber si pueden ayudarme, gracias.
__________________
Charlie.
  #4 (permalink)  
Antiguo 14/01/2008, 04:48
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Agregar controles dinamicamente. C#

Que tal!. No se si ya resolviste tu problema. La verdad lo intente y a mi me funciono, me mostraba el texto para el atributo value.

Ahora te pregunto algo: Una vez agregado el control en mi caso un TextBox a un panel que esta en el formulario, si el usuario digita algo sobre este textbox como puedo obtener lo que acaba de digitar la persona.

Sabes como solucionar esto?

O alguien sabe como?

Saludos, y muchas gracias

Cita:
Iniciado por chcma Ver Mensaje
Hola buenas tardes,

Tengo una clase que me crea un Control segun el tipo que le indique, con una funcion que devuelve true si se ha creado correctamente, el codigo de dicha funcion es algo asi:

Código:
		public bool CreaControl(int Ancho, int Alto, string Nombre, string Texto, TipoControl Tipo, string Estilo, ref WebControl MiControl)
		{
			switch(Tipo)
			{
				case TipoControl.Boton:
					MiControl = new Button();
					MiControl.ID = Nombre;
					MiControl.Attributes["Text"] = Texto;
					MiControl.Attributes["value"] = Texto;
					MiControl.Width = Ancho;
					MiControl.Height = Alto;
					//MiControl.Style = Estilo;
				break;

				case TipoControl.CajaTexto:
					MiControl = new TextBox();
					MiControl.ID = Nombre;
					MiControl.Attributes.Add("Text", Texto);					
					MiControl.Width = Ancho;
					MiControl.Height = Alto;
					//MiControl.Style = Estilo;
				break;
			}
			return true;
		}

Bueno, creo el objeto de dicha clase (Naturalmente solo he puesto la funcion no voy a poner todo el codigo de la clase, que solo lleva demás una enumeracion llamada TipoControl), y creo el Control sin problemas, pero el control me aparece sin el texto asignado y sin el Value... ¿Alguien sabe por qué es?, el boton me aparece ee.

Código:
private WebControl objControl;
private System.Web.UI.Control objFormulario;
private CreaControles objCreador;

		private System.Web.UI.HtmlControls.HtmlGenericControl Capa;
private void Page_Load(object sender, System.EventArgs e)
{
	objFormulario = this.FindControl("Form1");
	objCreador = new CreaControles();

	if (objCreador.CreaControl(20, 30, "idBoton", "Un Boton", CreaControles.TipoControl.Boton,"", ref objControl))
		{
		Capa = new HtmlGenericControl("div");
		Capa.Controls.Add(objControl);
		objFormulario.Controls.Add(Capa);
	}
}
  #5 (permalink)  
Antiguo 14/01/2008, 05:21
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: Agregar controles dinamicamente. C#

Con Javascript
  #6 (permalink)  
Antiguo 14/01/2008, 06:02
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Re: Agregar controles dinamicamente. C#

Yo eso no lo necesitaba por que tenía simplemente que mostrar unos datos (La verdad que ya no me acuerdo bien por que necesitaba hacer eso).

Sin embargo, lo que puedes hacer es un bucle de los controles e ir recuperando los datos para ese control.

Algo asi (Lo pongo sin tener el VS delante):

Código:
foreach(WebControl objControl in this.WebControls)
{
     switch(objControl.Type().ToString())
     {
            case "System.Web.Ui.WebControl.Text":
                   if(objControl.ID == "Nombre que pusiste al crear el control")
                         alert(objControl.Attributes["Text"].value);
            break;
     }
}
Algo asi, creo yo que sería.

Un saludo.
__________________
Charlie.
  #7 (permalink)  
Antiguo 16/01/2008, 09:16
Avatar de shumito  
Fecha de Ingreso: mayo-2006
Mensajes: 248
Antigüedad: 18 años
Puntos: 0
Re: Agregar controles dinamicamente. C#

Hace un tiempo cree un mantenedor de encuestas en donde cargo controles dinamicamente.Estos tienen que crearse con cada postback es decir en el load de la pagina, ademas deben tener SIEMPRE el mismo nombre (Id) y ademas de esto deben tener la propiedad EnabledViewstate=True.
En mi caso puse todos mis controles estaban dentro de un PlaceHolder(phMain) de la sgte forma.

Label Label1 = new Label();
Label1.Text="Algun Texto";

phMain.Controls.Add(Label1);

Tenia un link muy bueno donde explicaban todo. Lamentablemente no lo encontre pero lo seguire buscando.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:09.