ASP.NET: тонкости работы с DropDownList

8 октября 2008, 17:20
Пример обычноговыпадающего списка
Пример обычного
выпадающего списка
Зачастую при разработке веб-приложений на ASP.NET появляется необходимость заполнять DropDownList (выпадающий список) значениями из, например, базы данных — в зависимости от какого-то условия.

Если реализовывать заполнение DropDownList (например, с ID="DropDownList1") в Page_Load, например:

DropDownListFill(DropDownList1);

то возникает такая проблема — после PostBack'a страницы данные о выбранном значении (DropDownList1.SelectedValue) не сохраняются, так как после постбека снова срабатывает заполнение списка значениями.

Но выход есть: просто выполняйте заполнение DropDownList не в Page_Load, а в Page_Init, например:

private void Page_Init(object sender, EventArgs e)
{
DropDownListFill(DropDownList1);
}

В этом случае всё работает корректно — и DropDownList заполняется, и данные о SelectedValue не обнуляются, — поскольку Page_Init находится раньше в жизненном цикле ASP.NET-страницы, чем Page_Load.

Пользуйтесь!

Есть ещё один вариант решения вопроса, но он более хитрый и не подходит не для всех случаев. Работая с ASP.NET Ajax, можно использовать CascadingDropDown для заполнения DropDownList-a.

Заметка опубликована в рубриках: Веб-разработки

Ваше имя: Ваши контакты:
(e-mail или адрес сайта)

Комментарии

пишет:
9 октября 2009, 11:43
а что на счет CascadingDropDown?
Илья Барков пишет:
9 октября 2009, 12:09
Чтобы заполнять DropDownLost через CascadingDropDown, надо:
1. Создать веб-сервис, благодаря которому будет обеспечиваться выборка данных из БД для заполнения DropDownList (подробнее — смотрите на http://www.asp.net/AJAX/AjaxControlToolkit/Samples/CascadingDropDown/CascadingDropDown.aspx).
2. Повесить на страницу DropDownList и привязанный к нему CascadingDropDown, который загружает данные из созданного вами в п.1 веб-сервиса.
Связь с автором комментария: www.barkov.net
Ins пишет:
13 сентября 2010, 17:11
Спасибо, помогло)
Nik пишет:
5 ноября 2011, 00:31
Вообще-то, чтобы после PostBack'a страницы данные о выбранном значении (DropDownList1.SelectedValue) не затирались, надо просто сделать так:
private void Page_Init(object sender, EventArgs e)
{
if not IsPostback then
DropDownListFill(DropDownList1);
}
Связь с автором комментария: dasistgut@yandex.ru
Илья Барков Я занимаюсь веб-разработками, создаю интересные сервисы.
Живу в Днепропетровске.
Весьма разборчив в музыке.

Люблю продукцию компании Apple, пользуюсь Firefox 5 лет, немало работаю с технологиями Microsoft и весьма этим доволен.
  • Сервис отзывов «2 совета»
  • BMW
  • Социальная сеть SunSpace
Если вам интересен мой блог, подписывайтесь на него — feeds.feedburner.com/barkov