2012-02-01 2 views
2

Я пытаюсь добавить выпадающий динамически. никаких ошибок кроме того, что я не вижу ниспадающее меню Здесь нет код:Динамическое добавление DropDownList

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

Я понимаю, что это плохой вопрос, но -3 без единого примечания к ОП, предлагая им исправить свой вопрос (с подробностями того, что вы хотели бы исправить) ... это нелепо. –

+0

По крайней мере, дайте основание для downvote, чтобы OP мог узнать, что не так с сообщением. –

ответ

2

Проблема может быть, если вы не добавляете элемент управления на страницу достаточно рано. Элементы управления необходимо добавить на раннем этапе жизненного цикла страницы, чтобы связать их события.

Вы делаете это в мероприятии Load, что слишком поздно. Попробуйте добавить его во время события Init или переопределить метод CreateChildControls.

А также убедитесь, что вы делаете это при каждом запросе страницы, включая обратную передачу.

Надеюсь, это сработает для вас.

+1

Исправление метода createchildcontrols исправил его. Спасибо – user575219

+0

+1 Отлично, это сработало для вас. –

0

Похоже, из-за состояния IsPostBack этот код будет работать только если страница или иметь повторно отправил событие срабатывает.

0
  1. шаг, который код OnInit (Page_Init)
  2. удалить if(Ispostback) проверки при добавлении элементов управления для управления деревом. Почти никогда не вам нужно учитывать состояние обратной передачи при динамическом добавлении элементов управления.
Смежные вопросы