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
18 using System.Globalization;
\r
20 using System.Web.UI;
\r
22 namespace System.Web.UI.WebControls
\r
24 public class CheckBox : WebControl, IPostBackDataHandler
\r
26 private static readonly object CheckedChangedEvent = new object();
\r
30 base(HtmlTextWriterTag.Input);
\r
33 public virtual bool AutoPostBack
\r
37 object o = ViewState["AutoPostBack"];
\r
39 return (bool)AutoPostBack;
\r
44 ViewState["AutoPostBack"] = value;
\r
48 public virtual bool Checked
\r
52 object o = ViewState["Checked"];
\r
59 ViewState["Checked"] = value;
\r
63 public virtual string Text
\r
67 object o = ViewState["Text"];
\r
70 return String.Empty;
\r
74 ViewState["Text"] = value;
\r
78 private bool SaveCheckedViewState
\r
82 if(Events[CheckedChangedEvent] != null)
\r
86 if(GetType() == typeof(CheckBox))
\r
90 if(GetType() == typeof(RadioButton))
\r
100 public virtual TextAlign TextAlign
\r
104 object o = ViewState["TextAlign"];
\r
106 return (TextAlign)o;
\r
107 return TextAlign.Right;
\r
111 if(!System.Enum.IsDefined(typeof(TextAlign), value))
\r
112 throw new ArgumentException();
\r
113 ViewState["TextAlign"] = value;
\r
117 public event EventHandler CheckedChanged
\r
121 Events.AddHandler(CheckedChangedEvent, value);
\r
125 Events.RemoveHandler(CheckedChangedEvent, value);
\r
129 protected virtual void OnCheckedChanged(EventArgs e)
\r
133 EventHandler eh = (EventHandler)(Events[CheckedChangedEvent]);
\r
139 protected override void OnPreRender(EventArgs e)
\r
145 Page.RegisterRequiresPostBack(this);
\r
148 if(SaveCheckedViewState)
\r
150 ViewState.SetItemDirty("checked", false);
\r
154 protected override void Render(HtmlTextWriter writer)
\r
156 bool hasBeginRendering = false;
\r
157 if(ControlStyleCreated)
\r
159 //TODO: Uncomment this in final version
\r
161 if(!ControlStyle.IsEmpty)
\r
163 hasBeginRendering = true;
\r
164 ControlStyle.AddAttributesToRender(writer, this);
\r
170 hasBeginRendering = true;
\r
171 writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
\r
173 if(ToolTip.Length > 0)
\r
175 hasBeginRendering = true;
\r
176 writer.AddAttribute(HtmlTextWriterAttribute.Title, ToolTip);
\r
178 if(Attributes.Count > 0)
\r
180 hasBeginRendering = true;
\r
181 Attributes.AddAttributes(writer);
\r
183 if(hasBeginRendering)
\r
184 writer.RenderBeginTag(HtmlTextWriterTag.Span);
\r
185 if(Text.Length > 0)
\r
187 if(TextAlign == TextAlign.Right)
\r
189 writer.AddAttribute(HtmlTextWriterAttribute.For, ClientID);
\r
190 writer.RenderBeginTag(HtmlTextWriterTag.Label);
\r
191 writer.Write(Text);
\r
192 writer.RenderEndTag();
\r
193 RenderInputTag(writer, ClientID);
\r
196 RenderInputTag(writer, ClientID);
\r
197 writer.AddAttribute(HtmlTextWriterAttribute.For, ClientID);
\r
198 writer.RenderBeginTag(HtmlTextWriterTag.Label);
\r
199 writer.Write(Text);
\r
202 if(hasBeginRendering)
\r
203 writer.RenderEndTag();
\r
204 throw new NotImplementedException("Calling some internal functions");
\r
207 internal virtual void RenderInputTag(HtmlTextWriter writer, string clientId)
\r
209 writer.AddAttribute(HtmlTextWriterAttribute.Id, clientId);
\r
210 writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox");
\r
211 writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
\r
214 writer.AddAttribute(HtmlTextWriterAttribute.Checked, "checked");
\r
218 writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackClientEvent(this, String.Empty));
\r
219 writer.AddAttribute("language", "javascript");
\r
221 if(AccessKey.Length > 0)
\r
223 writer.AddAttribute(HtmlTextWriterAttribute.Accesskey, AccessKey);
\r
227 writer.AddAttribute(HtmlTextWriterAttribute.Tabindex, TabIndex.ToString(NumberFormatInfo.InvariantInfo));
\r
229 writer.RenderBeginTag(HtmlTextWriterTag.Input);
\r
230 writer.RenderEndTag();
\r
233 public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
\r
235 string postedVal = postCollection[postDataKey];
\r
236 bool postChecked = false;
\r
237 if(postedVal != null)
\r
239 postChecked = postedVal.Length > 0;
\r
241 Checked = postChecked;
\r
242 return (postChecked == Checked == false);
\r
245 public void RaisePostDataChangedEvent()
\r
247 OnCheckedChanged(EventArgs.Empty);
\r