Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Книги по теме

Искать:
в:
Порядок:

Исходник

Автор:

Igon

 
Название:

"Одноразовая" кнопка 2

Дата: 01 August 2007
Описание: Контрол обеспечивает однократное нажатие кнопки на форме. Кнопка нагло слизана отсюда: [CODEPOST ID=208]"Одноразовая" кнопка[/CODEPOST]. От себя добавлена возможность управлять поведением кнопки (одноразовая/не одноразовая), обработка валидации (т.е. если страница не прошла клиентскую валидацию кнопка не "залипнет") и самое главное добавлено сохранение значений AutoComplete из полей формы, которое автоматически не отрабатывает, из-за бага в IE (http://support.microsoft.com/kb/329156). 
  Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения следующую строку: [CODEPOST ID=213]"Одноразовая" кнопка 2[/CODEPOST]
Оценка: Проголосовало 2 посетителей, средняя оценка 3.00
Оценить:
  1 using System;
  2 using System.ComponentModel;
  3 using System.Web.UI;
  4 using System.Web.UI.WebControls;
  5 
  6 namespace WebControlsLibrary
  7 {
  8     [ToolboxData("<{0}:OneClickButton runat=server></{0}:OneClickButton>")]
  9     [Description("Кнопка, обеспечивающая однократное нажатие  ")]
 10     public class OneClickButton : Button
 11     {
 12         private bool _isClicked;
 13         private string _clickText;
 14         private bool _onceClick;
 15 
 16         #region Свойства
 17 
 18         /// <summary>
 19         /// Сохраняте факт  нажатия на кнопку 
 20         /// </summary>
 21         protected internal bool IsClicked
 22         {
 23             get { return _isClicked; }
 24             set { _isClicked = value; }
 25         }
 26 
 27 
 28         /// <summary>
 29         /// Текст, отображаемый на кнопке  после  нажатия
 30         /// </summary>
 31         [DefaultValue("Идет обработка !")]
 32         [Description("Текст, отображаемый на кнопке  после  нажатия")]
 33         public string ClickText
 34         {
 35             get { return _clickText; }
 36             set { _clickText = value; }
 37         }
 38 
 39         /// <summary>
 40         /// Режим однократного нажатия (Вкл/выкл)
 41         /// </summary>
 42         [DefaultValue(false)]
 43         [Description("Режим однократного нажатия (Вкл/выкл)")]
 44         public bool OnceClick
 45         {
 46             get { return _onceClick; }
 47             set { _onceClick = value; }
 48         }
 49 
 50         #endregion
 51 
 52         #region Protected методы
 53 
 54         protected override object SaveViewState()
 55         {
 56             object[] state;
 57             state = new object[4];
 58             state[0] = base.SaveViewState();
 59             state[1] = IsClicked;
 60             state[2] = ClickText;
 61             state[3] = OnceClick;
 62             return state;
 63         }
 64 
 65         protected override void LoadViewState(object savedState)
 66         {
 67             if (savedState != null)
 68             {
 69                 object[] state;
 70                 state = savedState as object[];
 71                 if (state[0] != null)
 72                     base.LoadViewState(state[0]);
 73                 if (state[1] != null)
 74                     IsClicked = (bool) state[1];
 75                 if (state[2] != null)
 76                     ClickText = (string) state[2];
 77                 if (state[3] != null)
 78                     OnceClick = (bool) state[3];
 79             }
 80         }
 81 
 82         protected override void OnPreRender(EventArgs e)
 83         {
 84             base.OnPreRender(e);
 85             if (!OnceClick) return;
 86             if (!IsClicked)
 87             {
 88                 string strClickedText = (string.Empty.Equals(ClickText))
 89                                             ? string.Empty
 90                                             : (" window.event.srcElement.value='" + ClickText + @"';");
 91                 OnClientClick =
 92                     "if (typeof(Page_ClientValidate) == 'function')                       "
 93                     + "{                                                                    "
 94                     + "   var PageClientValid = Page_ClientValidate();                      "
 95                     + "   if (!PageClientValid) return false;                               "
 96                     + "}                                                                    "
 97                     + "   window.event.srcElement.disabled=true;                            "
 98                     + strClickedText
 99                     + Page.ClientScript.GetPostBackEventReference(new PostBackOptions(this))
100                     + "   var formID = document.forms[0].id;                                "
101                     + "   window.external.AutoCompleteSaveForm(formID);                     "
102                     + ";return true;";
103             }
104             else
105             {
106                 Attributes.Add("disabled", "true");
107             }
108         }
109 
110         protected override void OnClick(EventArgs e)
111         {
112             base.OnClick(e);
113             IsClicked = true;
114         }
115 
116         #endregion
117 
118         public OneClickButton()
119             : base()
120         {
121             ClickText = "Идет обработка !";
122             OnceClick = false;
123         }
124     }
125 }
Вернуться к списку исходников в категории Создание элементов управления
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта