none
Controles dinamicos desaparecen al hacer postback y no funciona los eventos RRS feed

  • Pregunta

  • Hola  a todos  Tengo un problema  en un web form donde quiero poner varios controles de forma dinámica cuando le paso a una  funcion un parametro en donde le dice cuantos botones tiene que cargarse. Cuando de carga le doy a cualquier boton cargado  y entonces al darle click no ejecuta el evento y desaparecen los botones.

    Aquí les envio un poco de codigo

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using WebApplication1.Clases;
    using System.Data.SqlClient;
    using System.Data;
    
    
    namespace WebApplication1
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected Test obTest = new Test();
            protected DataTable tbTstAd, tbPregunta;
            protected int indice;
            protected Button[] btn = new Button[31];//
    
            protected string test_Selecionado;
           
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    tbTstAd = new DataTable();
                    tbPregunta = new DataTable();
                    tbTstAd = obTest.mostrar_test_Admi();
                    foreach (DataRow i in tbTstAd.Rows)
                    {
                        ddlSelTest.Items.Add(i["cTsCdg"].ToString());
                    }
                   
                }
            }
            
            protected void mostrar_panel_pregunt02(string test)////Listado del todo el test
            {
                Panel[] p = new Panel[31];
                DataTable tb = new DataTable();
                tb = tbPregunta = obTest.mostrar_test_Pregunta(test);
                int nPre = obTest.numero_de_preguntas(test);
                for (int i = 0; i <= 30; i++)
                {
                    p[i] = new Panel();
                }
                RadioButtonList[] rbld = new RadioButtonList[31];
                Label[] lbld = new Label[31];
                Image[] imgd = new Image[31];
                for (int i = 0; i <= 30; i++)
                {
                    lbld[i] = new Label();
                    rbld[i] = new RadioButtonList();
                    imgd[i] = new Image();
                }
                for (int i = 0; i <= nPre; i++)
                {
                    lbld[i].Text = tb.Rows[i]["Pregunta"].ToString();
                    rbld[i].Items.Add(tb.Rows[i]["Rsp1"].ToString());
                    rbld[i].Items.Add(tb.Rows[i]["Rsp2"].ToString());
                    rbld[i].Items.Add(tb.Rows[i]["Rsp3"].ToString());
                    imgd[i].ImageUrl = tb.Rows[i]["Img"].ToString();
                    /////añadir todo esto al panel
                    p[i].Controls.Add(lbld[i]);
                    p[i].Controls.Add(rbld[i]);
                    p[i].Controls.Add(imgd[i]);
                    panel_preguntas_cuerpo.Controls.Add(p[i]);
                }
            }
            protected void mostrar_preguntas_con_botones(string test)///Muestra las preguntas de cada test
            {
                DataTable tb = new DataTable();
                tb = obTest.mostrar_test_Pregunta(test);
                int num_pre = obTest.numero_de_preguntas(test);
                for (int i = 1; i <= num_pre; i++)
                {
    
                    btn[i] = new Button();
                    btn[i].ID = "btnPregunta" + i.ToString();
                    btn[i].Text = "Pregunta" + i.ToString();
                    btn[i].Click += new EventHandler(btn_Click);//////prueba
                    Panel_preguntas.Controls.Add(btn[i]);
                    
                }
            }
            protected void btn_Click(object sender, EventArgs e)
            {
                Response.Write("<script>alert('Prueba')</script>");
                
            }
            protected void ddlSelTest_SelectedIndexChanged(object sender, EventArgs e)
            {
                test_Selecionado = ddlSelTest.SelectedValue;
                tbPregunta = obTest.mostrar_test_Pregunta(test_Selecionado);
                indice = ddlSelTest.SelectedIndex;
                string ModoTestPresentacion;
                ModoTestPresentacion = rblTpPreguntaTest.SelectedValue;
                switch (ModoTestPresentacion)
                {
                    case "Listado":
                        mostrar_panel_pregunt02(test_Selecionado);
                        break;
                    case "Pregunta":
                        mostrar_preguntas_con_botones(test_Selecionado);
                        break;
                }
            }
        }
    }

    martes, 23 de mayo de 2017 13:18

Respuestas