|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
"Одноразовая" кнопка |
|
Дата:
|
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 |
| Вернуться к списку исходников в категории Создание элементов управления |
|
|
 |
 |
 |
 |
|
|