C# 动态添加DropDownList

C# 动态添加DropDownList,c#,asp.net,drop-down-menu,webforms,C#,Asp.net,Drop Down Menu,Webforms,我正在尝试动态添加一个下拉列表。 没有错误,只是我看不到下拉列表 代码如下: protected void Page_Load(object sender, EventArgs e) { if(Ispostback) { DropDownList ddlPercent = new DropDownList(); ddlPercent .ID = "ddlDiscountPercent"; ddlPercent .AutoPostBa

我正在尝试动态添加一个下拉列表。 没有错误,只是我看不到下拉列表 代码如下:

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;        
}

这似乎是由于
IsPostBack
条件的原因,只有在重新发布页面或触发事件时,此代码才会运行。

问题可能在于您没有足够早地将控件添加到页面。需要在页面生命周期的早期添加控件,以便将其事件绑定在一起

您正在
Load
事件中执行此操作,但为时已晚。尝试在
Init
事件期间添加它,或重写
CreateChildControls
方法

还要确保在每个页面请求(包括回发)上都这样做

希望这对你有用

  • 将代码移到OnInit(Page_Init)
  • 删除
    if(Ispostback)
    将控件添加到控件树时进行检查。几乎从不动态添加控件时,需要注意回发状态

  • 我知道这是一个糟糕的问题,但是-3没有给OP一个提示,要求他们解决他们的问题(详细说明您想要解决的问题)。。。这有点荒谬。可能是复制品