Как заполнить выпадающий список на основе выбора из другого выпадающего списка?
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
}