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
方法
还要确保在每个页面请求(包括回发)上都这样做
希望这对你有用
if(Ispostback)
将控件添加到控件树时进行检查。几乎从不动态添加控件时,需要注意回发状态我知道这是一个糟糕的问题,但是-3没有给OP一个提示,要求他们解决他们的问题(详细说明您想要解决的问题)。。。这有点荒谬。可能是复制品