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

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

Я уже показывал, что во многих случаях для создания веб-приложения при помощи Atlas вообще не требуется собственно программировния. Сплошной drag’n’drop, настройка папаметров и “декларативное программирование”, когда контролы напоминают шестеренки в механизме, а вы просто указываете, какая шестеренка и как зацепляет свою соседку. Однако зачастую этого недостаточно и контролы из того же Atlas Control Toolkit приходится добавлять динамически.

Простой пример — корзина заказа. На странице выводится список предзаказанных товаров, происходит окончательная проверка, а затем — непосредственно отправка заказа. Предположим, что мы хотим при отправке спросить, действительно ли клиент уверен, что все поля заполнены правильно. Естественным выбором, если вы используете Atlas, будет ConfirmButtonExtender. Одна беда — а что, если у нас в корзине нет товаров и, соответственно, отсутствует кнопка “заказать”, к которой привязывается ConfirmButtonExtender? Он, конечно же, будет выдавать ошибку. Значит, нам придется проверять, есть ли в форме эта кнопка и динамически добавлять контрол. Беда только в том, что в документации примера нет, но ничего обойдемся.

Итак, есть кнопка btnOrder, расположенная внутри UpdatePanel upButton. И есть наш контрол ConfirmButtonExtender, который принимает 2 параметра: TargetControlID (ID кнопки, на которую вешаем подтверждение) и ConfirmText (вопрос, который мы задаем пользователю). Итак:

  1. //создаем новый ConfirmButtonExtender
  2. AtlasControlToolkit.ConfirmButtonExtender cbeOrderBtn =  new AtlasControlToolkit.ConfirmButtonExtender();
  3.  
  4. //создаем настройки  ConfirmButtonProperties
  5. AtlasControlToolkit.ConfirmButtonProperties cbeProp =  new AtlasControlToolkit.ConfirmButtonProperties();
  6.  
  7. //добавляем параметр ConfirmText
  8. cbeProp.ConfirmText = “Заказ сформирован правильно?”;
  9.  
  10. //добавляем параметр  TargetControlId
  11. cbeProp.TargetControlID = btnOrder.ID;
  12.  
  13. //сопоставляем наш ConfirmButtonExtender и его свойства
  14. cbeOrderBtn.TargetProperties.Add(cbeProp);
  15.  
  16. //добавляем контрол в панель upButton
  17. upButton.Controls.Add(cbeOrderBtn);

Ну вот и все =)