У меня есть страница с двумя выпадающими списками и кнопкой.Все элементы управления находятся в панели обновления.Первый выпадающий список (ddl1) содержит много значений, которые вызвали огромное состояние представления, поэтому я отключил его.В событии oninit страницы я заполняю выпадающий список каждый раз, когда страница отправляется обратно.Кажется, все это работает нормально, показывает все значения, и я могу получить доступ к выбранному значению в моем обработчике событий.
Для ddl1 атрибут autopostback имеет значение true, поэтому при изменении его значения второй раскрывающийся список (ddl2) заполняется некоторыми значениями, которые зависят от выбора в ddl1.Это также работает нормально, значения в ddl2 меняются, когда я выбираю значение в ddl1.
ddl2 не имеет отключенного состояния просмотра.Кнопка, которая находится под моими двумя выпадающими списками, по умолчанию отключена и становится активной, когда значение ddl2 изменяется на что угодно, кроме string.empty.Здесь я сталкиваюсь с проблемами.ddl2 тоже выполняет автоответчик, но он, похоже, теряет выбранный индекс / значение.Когда я в своем коде проверяю, включить или отключить кнопку, выбранный индекс всегда равен 0, а выбранное значение - строка. Пусто.
Если я включаю viewstate на ddl1, все это прекрасно работает.Кто-нибудь может указать мне, что я делаю неправильно?
Вот код, выполняемый постбэком ddl2:
protected void AvailableProgramsIndexChanged(object sender, EventArgs e)
{
ToggleMoreInformationButton();
}
private void ToggleMoreInformationButton()
{
if (Request.Browser.Type.Contains("IE"))
{
ToggleIE();
}
else
{
ToggleNonIE();
}
}
private void ToggleIE()
{
if (this.ddlAvailablePrograms.SelectedValue != string.Empty)
{
this.careerInfoLearnMoreSubmit.Enabled = true;
this.careerInfoLearnMoreSubmit.CssClass = "submit nongreyed";
}
else
{
this.careerInfoLearnMoreSubmit.Enabled = false;
this.careerInfoLearnMoreSubmit.CssClass = "submit greyed";
}
}
private void ToggleNonIE()
{
if (this.ddlAvailablePrograms.SelectedValue != string.Empty)
{
this.careerInfoLearnMoreSubmit.Enabled = true;
this.careerInfoLearnMoreSubmit.Style.Remove("opacity");
this.careerInfoLearnMoreSubmit.Style.Add("opacity", "1.0;");
}
else
{
this.careerInfoLearnMoreSubmit.Enabled = false;
this.careerInfoLearnMoreSubmit.Style.Remove("opacity");
this.careerInfoLearnMoreSubmit.Style.Add("opacity", "0.5;");
}
}
Код вообще не изменяет выбранное значение ddl2.
Спасибо,
b3n