我正在尝试动态添加下拉列表。 没有错误,除了我没有看到下拉列表 这是代码:
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;
}
答案 0 :(得分:2)
问题可能在于您没有及早将控件添加到页面。需要在页面生命周期的早期添加控件以使其事件处于捆绑状态。
你在Load
事件中这样做,为时已晚。尝试在Init
事件期间添加它或覆盖CreateChildControls
方法。
并确保在每个页面请求(包括回发)上执行此操作。
希望这适合你。
答案 1 :(得分:0)
似乎是因为IsPostBack
条件,只有在重新发布页面或触发事件时才会运行此代码。
答案 2 :(得分:0)
if(Ispostback)
检查。在动态添加控件时,几乎从不你需要注意回发状态。