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

Логин

Email:
  Пароль:

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

Поиск

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

Книги по теме

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

Исходник

Автор:

monstrU

 
Название:

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

Дата: 05 July 2007
Описание: Контрол обеспечивает однократное нажатие кнопки на форме. Данный контрол решает проблему много кратного вызова пользователем обработчика события Click на форме - после нажатия кнопки она становиться заблокированной, но обработка серверного события продолжается 
  Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения следующую строку: [CODEPOST ID=208]"Одноразовая" кнопка[/CODEPOST]
Оценка: Проголосовало 6 посетителей, средняя оценка 3.83
Оценить:
  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Text;
  5 using System.Web;
  6 using System.Web.UI;
  7 using System.Web.UI.WebControls;
  8 
  9 
 10 
 11     [ToolboxData("<{0}:OneClickButton runat=server></{0}:OneClickButton>")]
 12     [Description("Кнопка, обеспечивающая однократное нажатие  ")]
 13     public class OneClickButton : System.Web.UI.WebControls.Button
 14     {
 15         private bool _isClicked;
 16         private string _clickText;
 17 
 18         #region Свойства
 19 
 20         /// <summary>
 21         /// Сохраняте факт  нажатия на кнопку 
 22         /// </summary>
 23         protected internal bool IsClicked
 24         {
 25             get { return _isClicked; }
 26             set { _isClicked = value; }
 27         }
 28 
 29         
 30         /// <summary>
 31         /// Текст, отображаемый на кнопке  после  нажатия
 32         /// </summary>
 33         [DefaultValue("Идет обработка !")]
 34         [Description("Текст, отображаемый на кнопке  после  нажатия")]
 35         public string ClickText
 36         {
 37             get { return _clickText; }
 38             set { _clickText = value; }
 39         }
 40 
 41         #endregion
 42 
 43 
 44         #region Protected методы
 45 
 46         protected override object SaveViewState()
 47         {
 48             object[] state;
 49             state = new object[3];
 50             state[0] = base.SaveViewState( );
 51             state[1] = IsClicked;
 52             state[2] = ClickText;
 53             return state;
 54         }
 55         protected override void LoadViewState(object savedState)
 56         {
 57             if (savedState != null)
 58             {
 59                 object[] state;
 60                 state = savedState as object[];
 61                 if (state[0] != null)
 62                     base.LoadViewState(state[0]);
 63                 if (state[1] != null)
 64                     IsClicked = (bool)state[1];
 65                 if (state[2] != null)
 66                     ClickText = (string)state[2];
 67             }
 68         }
 69 
 70         protected override void OnPreRender(EventArgs e)
 71         {
 72             base.OnPreRender(e);
 73             if (!IsClicked)
 74                 this.OnClientClick = "javascript: var obj=document.getElementById('" + this.UniqueID + "'); if (obj!=null) { obj.disabled=true; obj.value='" 
 75                                      +  ClickText+ "';}"+
 76                                      this.Page.ClientScript.GetPostBackEventReference(new PostBackOptions(this)) + ";return true;";
 77             else 
 78                 this.Attributes.Add("disabled","true");
 79 
 80         }
 81         
 82         protected override void OnClick(System.EventArgs e)
 83         {
 84             base.OnClick(e);
 85             IsClicked = true;
 86         }
 87 
 88         #endregion
 89 
 90         public OneClickButton() : base ()
 91         {
 92             ClickText = "Идет обработка !";
 93         }
 94         
 95     }
 96 
 97 
 98 
Вернуться к списку исходников в категории Создание элементов управления
 
Наш Киев

Apartments for Rent

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