Dynamically adding a DropDownList

19,409

The problem may be if you are not adding the control to the page early enough. Controls need to be added early in the page lifecycle to get their events tied in.

You're doing it in the Load event, which is too late. Try adding it during the Init event or overriding the CreateChildControls method.

And also make sure you do this on EVERY page request including postbacks.

Hope this works for you.

Share:
19,409
user575219
Author by

user575219

Updated on June 04, 2022

Comments

  • user575219
    user575219 almost 2 years

    I am trying to add a dropdown dynamically. No errors except that I don't see the dropdown Here's the code:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(Ispostback)
        {
            DropDownList ddlPercent = new DropDownList();
            ddlPercent .ID = "ddlDiscountPercent";
            ddlPercent .AutoPostBack = true;
            Panel1.Controls.Add(ddlPercent );
            ddlPercent .ID = "ddlPercent " + 1;
            ddlPercent .Items.Add(new ListItem("5", "5%"));
            ddlPercent .Items.Add(new ListItem("10", "10%"));
            ddlPercent .Items.Add(new ListItem("15", "15%"));
            ddlPercent .Items.Add(new ListItem("20", "20%"));
            ddlPercent .Items.Add(new ListItem("30", "30%"));
            ddlPercent .Items.Add(new ListItem("50", "50%"));
    
            ddlPercent.SelectedIndexChanged += 
                      new EventHandler(ddlPercent_SelectedIndexChanged);
    
            ContentPlaceHolder cph = 
                      (ContentPlaceHolder)this.Master.FindControl("MainContent");
            cph.Controls.Add(ddlPercent );
            // ddlPercent.SelectedIndex =(Int32) ViewState["ddl_index"];
        }
    }
    
    protected void ddlPercent_SelectedIndexChanged(object sender, EventArgs e)
    {
         DropDownList ComboBox=(DropDownList)sender;
         ViewState["ddl_index"] = ComboBox.SelectedValue;        
    }