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

Логин

Email:
  Пароль:

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

Поиск

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

Книги по теме

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

Исходник

Автор:

frodik

 
Название:

Timer

Дата: 07 October 2004
Описание: Мне понадобился таймер который делает PostBack форме после окончания времени, мои изыскания вылились в простенький контрольчик.Не претендую на значимость но может кому нить понадобится, а может кто-то не знает как написать контрол который возвращает форму(как я раньше) Таких контролов на форме может быть несколько за счет создания уникальных имен с помощью ClientID 
  Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения следующую строку: [CODEPOST ID=114]Timer[/CODEPOST]
Оценка: Проголосовало 5 посетителей, средняя оценка 3.20
Оценить:
  1 public class TimerControl : Control, IPostBackEventHandler
  2 {
  3    private int seconds;
  4    private string cssClass;
  5    
  6    public event EventHandler TimeOver;
  7 
  8    public TimerControl()
  9    {
 10       seconds = 0;
 11    }
 12    
 13    public string CssClass
 14    {
 15       set
 16       {
 17          cssClass = value;
 18       }
 19    }
 20 
 21    public int Seconds
 22    {
 23       set
 24       {
 25          seconds = value;
 26       }
 27    }
 28 		
 29    protected override void OnPreRender(System.EventArgs e)
 30    {
 31       base.OnPreRender (e);
 32       Page.RegisterStartupScript(ClientID + "TimerScript",
 33       "<script language=\"javascript\">\n" +
 34       "<!--\n" +
 35       "var " + ClientID + " = document.getElementById(\'" + ClientID + "\');\n" +
 36       "var " + ClientID + "Seconds = " + seconds + ";\n" +
 37       "function " + ClientID + "Function()" +
 38       "{\n" + 
 39       "   " + ClientID + "Seconds--;\n" +
 40       "	  " + "if(" + ClientID + "Seconds <= 0)\n" +
 41       "   " + "   " + Page.GetPostBackEventReference(this) +";\n" +
 42       "   " + "else\n" +
 43       "   " + "{\n" +
 44       "   " + "   " + "var hours = Math.floor(" + ClientID + "Seconds / 3600);\n" + 
 45       "   " + "   " + "var minutes = Math.floor((" + ClientID + "Seconds % 3600) / 60);\n" + 
 46       "   " + "   " + "var seconds = (" + ClientID + "Seconds % 3600) % 60;\n" + 
 47       "   " + "   " + ClientID + ".value = (hours >= 10 ? hours : ('0' + hours)) + ':' + (minutes >= 10 ? minutes : ('0' + minutes)) + ':' + (seconds >= 10 ? seconds : ('0' + seconds));\n" +
 48       "    " + "   " + "window.setTimeout(\'" + ClientID + "Function()\', 1000);\n" +
 49       "    " + "}\n" +
 50       "}\n" +
 51       ClientID + "Function()\n" +
 52       "//-->\n" +
 53       "</script>");
 54    }
 55 
 56    protected override void Render(HtmlTextWriter writer)
 57    {
 58       base.Render (writer);
 59       writer.WriteBeginTag("input");
 60       writer.WriteAttribute("type", "text");
 61       if(cssClass != null)
 62       writer.WriteAttribute("class", cssClass);
 63       writer.WriteAttribute("name", UniqueID);
 64       if(ID != null)
 65          writer.WriteAttribute("id", ClientID);
 66       writer.Write(" readonly");
 67       writer.Write(HtmlTextWriter.TagRightChar);
 68    }
 69 
 70    public void RaisePostBackEvent(string eventArgument)
 71    {
 72       if(TimeOver != null)
 73          TimeOver(this, new EventArgs());
 74    }
 75 }
Вернуться к списку исходников в категории Создание элементов управления
 
Apartments for Rent

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