Я уже показывал, что во многих случаях для создания веб-приложения при помощи Atlas вообще не требуется собственно программировния. Сплошной drag’n’drop, настройка папаметров и “декларативное программирование”, когда контролы напоминают шестеренки в механизме, а вы просто указываете, какая шестеренка и как зацепляет свою соседку. Однако зачастую этого недостаточно и контролы из того же Atlas Control Toolkit приходится добавлять динамически.
Простой пример — корзина заказа. На странице выводится список предзаказанных товаров, происходит окончательная проверка, а затем — непосредственно отправка заказа. Предположим, что мы хотим при отправке спросить, действительно ли клиент уверен, что все поля заполнены правильно. Естественным выбором, если вы используете Atlas, будет ConfirmButtonExtender. Одна беда — а что, если у нас в корзине нет товаров и, соответственно, отсутствует кнопка “заказать”, к которой привязывается ConfirmButtonExtender? Он, конечно же, будет выдавать ошибку. Значит, нам придется проверять, есть ли в форме эта кнопка и динамически добавлять контрол. Беда только в том, что в документации примера нет, но ничего обойдемся.
Итак, есть кнопка btnOrder, расположенная внутри UpdatePanel upButton. И есть наш контрол ConfirmButtonExtender, который принимает 2 параметра: TargetControlID (ID кнопки, на которую вешаем подтверждение) и ConfirmText (вопрос, который мы задаем пользователю). Итак:
-
//создаем новый ConfirmButtonExtender
-
AtlasControlToolkit.ConfirmButtonExtender cbeOrderBtn = new AtlasControlToolkit.ConfirmButtonExtender();
-
-
//создаем настройки ConfirmButtonProperties
-
AtlasControlToolkit.ConfirmButtonProperties cbeProp = new AtlasControlToolkit.ConfirmButtonProperties();
-
-
//добавляем параметр ConfirmText
-
cbeProp.ConfirmText = “Заказ сформирован правильно?”;
-
-
//добавляем параметр TargetControlId
-
cbeProp.TargetControlID = btnOrder.ID;
-
-
//сопоставляем наш ConfirmButtonExtender и его свойства
-
cbeOrderBtn.TargetProperties.Add(cbeProp);
-
-
//добавляем контрол в панель upButton
-
upButton.Controls.Add(cbeOrderBtn);
Ну вот и все =)