Динамическое добавление DropDownList - PullRequest
2 голосов
/ 01 февраля 2012

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

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

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...