Динамическое добавление ConfirmButtonExtender

Я уже показывал, что во многих случаях для создания веб-приложения при помощи 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); Ну вот и все =)
 

Пока лишь 1 комментарий

  1. wow 3.01.2009 10:40

    Спасибо за науку!