Как заполнить выпадающий список на основе выбора из другого выпадающего списка?

protected void ddlEnvironment_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddlEnvironment.SelectedIndex == 0)
    {
        ddlServers.Items.Add("item1");
    }

    if (ddlEnvironment.SelectedIndex == 1)
    {
        ddlServers.Items.Add("item2");
    }

    if (ddlEnvironment.Text == "Production")
    {
    }
}

Выше не работает. Когда я делаю выбор в ddlEnvironment, и это первый элемент в списке (индекс 0), другой выпадающий список не дополняется "item1". Зачем?

2 ответа

Решение

Могут быть разные причины, по умолчанию выпадающий список не делать постбэк.

  • Проверьте, есть ли у вас AutoPostBack="true"
  • Вы связываете ddlEnvironment в блоке!Page.IsPostBack, чтобы он поддерживал свое состояние при обратной передаче

    if(!Page.IsPostBack)
    {
       ddlEnvironment.AuutoPostBack = true;
       ddlEnvironment.DataSource = datasource; 
       ddlEnvironment.DataBind();
    }
    

Я полагаю, у вас есть AutoPostBack=true - право?

Если вы инициализируете ddlEnvironment в обработчике событий Page_Load(), он сбрасывается при обратной передаче.

Вам нужно сделать что-то вроде этого:

If (!Page.IsPostback)
{ 
    // initialize ddlEnvironment here 
}
Другие вопросы по тегам