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

Boton creado dinamicamente

Estas en el tema de Boton creado dinamicamente en el foro de ASPX (.net) en Foros del Web. Hola, utilizo visual studio 2008 y lenguaje c# en una aplicacion web. Estoy intentando crear unos botones dinamicamente y que estos al hacer click hagan ...
  #1 (permalink)  
Antiguo 21/07/2008, 00:59
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Boton creado dinamicamente

Hola, utilizo visual studio 2008 y lenguaje c# en una aplicacion web.
Estoy intentando crear unos botones dinamicamente y que estos al hacer click hagan algo.

Los consigo crear, pero cuando hago click se recarga la pagina y no hace caso al codigo del click:

//codigo que crea el boton:
Button boiton1 = new Button();
boiton1.Text = "Haz click";
boiton1.Click += new EventHandler(boiton1_Click);

private void boiton1_Click(object sender, System.EventArgs e)
{
//aqui va le codigo a ejecutar
}

Alguna sugerencia??

Muchas Gracias!
  #2 (permalink)  
Antiguo 21/07/2008, 02:08
 
Fecha de Ingreso: julio-2008
Mensajes: 34
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Boton creado dinamicamente

Tienes que agregar el control creado a la pagina, ya sea a un panel o a otro tipo de control.

panel1.Controls.add(boiton1);

salu2
  #3 (permalink)  
Antiguo 21/07/2008, 03:18
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Boton creado dinamicamente

Sí, el boton lo agrego lo veo y puedo pulsar, pro al pulsar es cuando no me hace nada.


Gracias!
  #4 (permalink)  
Antiguo 24/07/2008, 08:40
Avatar de Indigo77  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 60
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Boton creado dinamicamente

Hola,

al hacer click en el boton, se produce un post, por lo que en esa recarga te tienes que asegurar que vuelves a crear el botón. A parte, he leido en algunos sitios que a los controles creados dinámicamente hay que asignarles un ID. También recordarte que los controles creados dinámicamente deben crearse en el evento PreInit de la página. Te paso el enlace a la msdn donde se explica.

http://msdn.microsoft.com/en-us/library/ms178472.aspx

---
Visita mi Blog
  #5 (permalink)  
Antiguo 28/07/2008, 05:57
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Boton creado dinamicamente

Me ha servido, pero sigo sin conseguirlo.
Esto es lo que tengo:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
static Button[] btn_arr = new Button[40];
static int btn_count;

protected void Page_Load(object sender, EventArgs e)
{
try
{
if (btn_arr[0] is Button) {
foreach (Button button in btn_arr)
{
if (button!=null)
{
add_button(button);
}

}
}
}
catch (Exception ex)
{
lblStatus.Text += ex.Message.ToString();
}
}

protected void add_button(Button button)
{
try
{
pnlMain.Controls.Add(button);
pnlMain.Controls.Add(new LiteralControl("<br>"));
}
catch (Exception ex)
{
lblStatus.Text += ex.Message.ToString();
}
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
Button new_button = new Button();
new_button.ID = txtID.Text;
new_button.ForeColor = System.Drawing.Color.FromName(txtForeColor.Text);
new_button.Text = txtText.Text;
new_button.Click += new EventHandler(ClickDelBoton); btn_arr[btn_count++] = new_button;
add_button(new_button);
lblStatus.Text += "Created button " + new_button.ID + " and of color " + new_button.ForeColor;
}
catch (Exception ex)
{
lblStatus.Text += ex.Message.ToString();
}



}

protected void ClickDelBoton(object sender, EventArgs e) {
lblStatus.Text += "OOOuuuyea";
}

}


Sale bien, el boton se mantienen al hacer el reload, pero al pulsar el nuevo boton, no entra en el evento. Es lo que me falta unicamente, que no entra en el EVENTO "ClickDelBoton".

Gracias!
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 00:11.