Foros del Web » Programación para mayores de 30 ;) » .NET »

Agregar controles con cada Click de un Boton

Estas en el tema de Agregar controles con cada Click de un Boton en el foro de .NET en Foros del Web. Buenos días, Alguien sabe como agregar controles a una página cada vez que se de click en un boton??? Tengo este código en el Button1_Click: ...
  #1 (permalink)  
Antiguo 17/09/2009, 11:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Mensaje Agregar controles con cada Click de un Boton

Buenos días,

Alguien sabe como agregar controles a una página cada vez que se de click en un boton???
Tengo este código en el Button1_Click:

// Creo el DropDownList
DropDownList ddlX = new DropDownList();
// Le asigno un ID dinamico
ddlX.ID = "id_" + panel1.Controls.Count.ToString();
// Le activo el PostBack
ddlX.AutoPostBack = true;
// Le cargo datos ( eso no lo pego aquí )
// Le adiciono el manejador de eventos
ddlX.SelectedIndexChanged += new EventHandler(DDL_SelectedIndexChanged);
// Lo adiciono a un Panel creado en vista de diseño
panel1.Controls.Add(ddlX);

El problema es que solo se me crea un combo, sin importar el numero de veces que le de click, es decir, cada vez que se recarga la página se borra y vuelve y se crea.... que falta? relacionarlo/guardarlo en el viewstate??? ( de esto no se mucho)...

gracias...
  #2 (permalink)  
Antiguo 17/09/2009, 12:19
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Agregar controles con cada Click de un Boton

habria q ver q eventos tienes asociados en tu PageLoad , puedes estar haciendo un clear o reasignando el container y por eso pierdes los agregados.

claro que tu control panel1 debera tener activada la opcion para mantener su viewstate.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 17/09/2009, 13:16
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Agregar controles con cada Click de un Boton

Es un nuevo web form con las propiedades por defecto, el panel1 tiene el EnableViewState en true ( por defecto ), y en la página solo pongo un boton y el siguiente codigo en el onclick:

protected void Button1_Click(object sender, EventArgs e)
{
DropDownList ddlX = new DropDownList();
ddlX.ID = "id_" + panel1.Controls.Count.ToString();
ddlX.AutoPostBack = true;
ddlX.Items.Add("uno");
ddlX.Items.Add("dos");
//ddlX.SelectedIndexChanged += new EventHandler(DropDownList2_SelectedIndexChanged);

panel1.Controls.Add(ddlX);
}

en el Page_Load no hay nada...

Gracias por su ayuda.

Oscar
  #4 (permalink)  
Antiguo 17/09/2009, 15:01
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Agregar controles con cada Click de un Boton

el problema esta en que los controles son recreados en el evento preinit de tu forma dale una vuelta a esto

http://www.aspsnippets.com/post/2009...in-ASPNet.aspx
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 20/09/2009, 03:30
 
Fecha de Ingreso: junio-2009
Mensajes: 11
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Agregar controles con cada Click de un Boton

Además está el problema de los postback.

1) creas un control dinámicamente. al ejecutar un evento.
OK
2) Disparas (Por lo que sea) un segundo evento desde la misma página.
al ejecutar el postback la página se vuelve a crear, y ese control que has crado en el evento anterior NO SE ESTÁ ESTÁ CREANDO al ejecutar este nuevo evento. Por lo tanto el control que creastes con aterioridad ha desaparecido.

Los POSTBACK o recargas de página para cualquier minimo evento son el puto infierno de la programacion en asp.net.
Evitalos en la medida que puedas usando javascript, ajax, controles Html...

Cuando no tengas mas remedio que usarlos recuerda que en cada postback o recarga de página se tiene que reconstruir lá página igual que estaba antes.
Si tienes El viewstate de la página activado ya hace gran parte del trabajo. pero los controles que has creado dinámicamente son tu responsabilidad y tendrás que añadirlos tu.
  #6 (permalink)  
Antiguo 21/09/2009, 06:29
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Agregar controles con cada Click de un Boton

Sí, en el postback debería rehabilitar el dropdownlist, por ejemplo metiendo las opciones generadas en variables de sesión.

Luego en el Page_Load debería tener algo así:

if (Page.IsPostBack)
{
DropDownList1.Items.Add(session.variable1);
DropDownList1.Items.Add(session........);
DropDownList1.Items.Add(session.variableN);
}
else { }
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 19:47.