2 * Namespace: System.Web.UI.WebControls
\r
5 * Author: Gaurav Vaish
\r
6 * Maintainer: gvaish@iitk.ac.in
\r
7 * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>
\r
10 * (C) Gaurav Vaish (2001)
\r
11 * Thanks to Leen Toelen (toelen@hotmail.com)'s classes that helped me
\r
12 * to write the contents of the function LoadPostData(...)
\r
16 using System.Collections;
\r
17 using System.Collections.Specialized;
\r
19 using System.Web.UI;
\r
21 namespace System.Web.UI.WebControls
\r
23 public class CheckBox : WebControl, IPostBackDataHandler
\r
25 private static readonly object CheckedChangedEvent = new object();
\r
32 public virtual bool AutoPostBack
\r
36 object o = ViewState["AutoPostBack"];
\r
38 return (bool)AutoPostBack;
\r
43 ViewState["AutoPostBack"] = value;
\r
47 public virtual bool Checked
\r
51 object o = ViewState["Checked"];
\r
58 ViewState["Checked"] = value;
\r
62 public virtual string Text
\r
66 object o = ViewState["Text"];
\r
69 return String.Empty;
\r
73 ViewState["Text"] = value;
\r
77 public virtual TextAlign TextAlign
\r
81 object o = ViewState["TextAlign"];
\r
83 return (TextAlign)o;
\r
84 return TextAlign.Right;
\r
88 if(!System.Enum.IsDefined(typeof(TextAlign), value))
\r
89 throw new ArgumentException();
\r
90 ViewState["TextAlign"] = value;
\r
94 public event EventHandler CheckedChanged
\r
98 Events.AddHandler(CheckedChangedEvent, value);
\r
102 Events.RemoveHandler(CheckedChangedEvent, value);
\r
106 protected virtual void OnCheckedChanged(EventArgs e)
\r
110 EventHandler eh = (EventHandler)(Events[CheckedChangedEvent]);
\r
116 protected virtual void OnPreRender(EventArgs e)
\r
118 throw new NotImplementedException();
\r
121 protected override void Render(HtmlTextWriter writer)
\r
123 //TODO: THE LOST WORLD!
\r
124 bool hasBeginRendering = false;
\r
125 if(ControlStyleCreated)
\r
127 if(!ControlStyle.IsEmpty)
\r
129 hasBeginRendering = true;
\r
130 ControlStyle.AddAttributesToRender(writer, this);
\r
135 hasBeginRendering = true;
\r
136 writer.AddAttribute(HtmlTextWriterAttribute.Disbled, "disabled");
\r
138 if(ToolTip.Length > 0)
\r
140 hasBeginRendering = true;
\r
141 writer.AddAttribute(HtmlTextWriterAttribute.Title, ToolTip);
\r
143 if(Attributes.Count > 0)
\r
145 hasBeginRendering = true;
\r
146 Attributes.AddAttributes(writer);
\r
148 if(hasBeginRendering)
\r
149 writer.RenderBeginTag(HtmlTextWriterTag.Span);
\r
150 if(Text.Length > 0)
\r
152 // Looks wierd, ain't? But found out interestingly.
\r
153 if(TextAlign == TextAlign.Right)
\r
155 writer.AddAttribute(HtmlTextWriterAttribute.For, ClientID);
\r
156 writer.RenderBeginTag(HtmlTextWriterTag.Label);
\r
157 writer.Write(Text);
\r
158 writer.RenderEngTag();
\r
159 RenderInputTag(writer, ClientID);
\r
162 RenderInputTag(writer, ClientID);
\r
163 writer.AddAttribute(HtmlTextWriterAttribute.For, ClientID);
\r
164 writer.RenderBeginTag(HtmlTextWriterTag.Label);
\r
165 writer.Write(Text);
\r
168 if(hasBeginRendering)
\r
169 writer.RenderEndTag();
\r
172 internal virtual void RenderInputTag(HtmlTextWriter writer, string clientId)
\r
174 writer.AddAttribute(HtmlTextWriterAttribute.Id, clientId);
\r
175 writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox");
\r
176 writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
\r
179 writer.AddAttribute(HtmlTextWriterAttribute.Checked, "checked");
\r
183 writer.AddAttribute(HtmlTextWriterAttribute.OnClick,Page.GetPostBackClientEvent(this, String.Empty));
\r
184 writer.AddAttribute("language", "javascript");
\r
186 if(AccessKey.Length > 0)
\r
188 writer.AddAttribute(HtmlTextWriterAttribute.AccessKey, AccessKey);
\r
192 writer.AddAttribute(HtmlTextWriterAttribute.TabIndex, TabIndex.ToString(NumberFormatInfo.InvariantInfo));
\r
194 writer.RenderBeginTag(HtmlTextWriterTag.Input);
\r
195 writer.RenderEndTag();
\r
198 public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
\r
200 string postedVal = postCollection[postDataKey];
\r
201 bool postChecked = false;
\r
202 if(postedVal != null)
\r
204 postChecked = postedVal.Length > 0;
\r
206 Checked = postChecked;
\r
207 return (postChecked == Checked == false);
\r
210 public void RaisePostDataChangedEvent()
\r
212 OnCheckedChanged(EventArgs.Empty);
\r