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
8 * Implementation: yes
\r
11 * (C) Gaurav Vaish (2001)
\r
12 * Thanks to Leen Toelen (toelen@hotmail.com)'s classes that helped me
\r
13 * to write the contents of the function LoadPostData(...)
\r
17 using System.Collections;
\r
18 using System.Collections.Specialized;
\r
19 using System.Globalization;
\r
21 using System.Web.UI;
\r
23 namespace System.Web.UI.WebControls
\r
25 public class CheckBox : WebControl, IPostBackDataHandler
\r
27 private static readonly object CheckedChangedEvent = new object();
\r
31 base(HtmlTextWriterTag.Input);
\r
34 public virtual bool AutoPostBack
\r
38 object o = ViewState["AutoPostBack"];
\r
40 return (bool)AutoPostBack;
\r
45 ViewState["AutoPostBack"] = value;
\r
49 public virtual bool Checked
\r
53 object o = ViewState["Checked"];
\r
60 ViewState["Checked"] = value;
\r
64 public virtual string Text
\r
68 object o = ViewState["Text"];
\r
71 return String.Empty;
\r
75 ViewState["Text"] = value;
\r
79 private bool SaveCheckedViewState
\r
83 if(Events[CheckedChangedEvent] != null)
\r
87 if(GetType() == typeof(CheckBox))
\r
91 if(GetType() == typeof(RadioButton))
\r
101 public virtual TextAlign TextAlign
\r
105 object o = ViewState["TextAlign"];
\r
107 return (TextAlign)o;
\r
108 return TextAlign.Right;
\r
112 if(!System.Enum.IsDefined(typeof(TextAlign), value))
\r
113 throw new ArgumentException();
\r
114 ViewState["TextAlign"] = value;
\r
118 public event EventHandler CheckedChanged
\r
122 Events.AddHandler(CheckedChangedEvent, value);
\r
126 Events.RemoveHandler(CheckedChangedEvent, value);
\r
130 protected virtual void OnCheckedChanged(EventArgs e)
\r
134 EventHandler eh = (EventHandler)(Events[CheckedChangedEvent]);
\r
140 protected override void OnPreRender(EventArgs e)
\r
146 Page.RegisterRequiresPostBack(this);
\r
149 if(SaveCheckedViewState)
\r
151 ViewState.SetItemDirty("checked", false);
\r
155 protected override void Render(HtmlTextWriter writer)
\r
157 bool hasBeginRendering = false;
\r
158 if(ControlStyleCreated)
\r
160 //TODO: Uncomment this in final version
\r
162 if(!ControlStyle.IsEmpty)
\r
164 hasBeginRendering = true;
\r
165 ControlStyle.AddAttributesToRender(writer, this);
\r
171 hasBeginRendering = true;
\r
172 writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
\r
174 if(ToolTip.Length > 0)
\r
176 hasBeginRendering = true;
\r
177 writer.AddAttribute(HtmlTextWriterAttribute.Title, ToolTip);
\r
179 if(Attributes.Count > 0)
\r
181 hasBeginRendering = true;
\r
182 Attributes.AddAttributes(writer);
\r
184 if(hasBeginRendering)
\r
185 writer.RenderBeginTag(HtmlTextWriterTag.Span);
\r
186 if(Text.Length > 0)
\r
188 if(TextAlign == TextAlign.Right)
\r
190 writer.AddAttribute(HtmlTextWriterAttribute.For, ClientID);
\r
191 writer.RenderBeginTag(HtmlTextWriterTag.Label);
\r
192 writer.Write(Text);
\r
193 writer.RenderEndTag();
\r
194 RenderInputTag(writer, ClientID);
\r
197 RenderInputTag(writer, ClientID);
\r
198 writer.AddAttribute(HtmlTextWriterAttribute.For, ClientID);
\r
199 writer.RenderBeginTag(HtmlTextWriterTag.Label);
\r
200 writer.Write(Text);
\r
203 if(hasBeginRendering)
\r
204 writer.RenderEndTag();
\r
205 throw new NotImplementedException("Calling some internal functions");
\r
208 internal virtual void RenderInputTag(HtmlTextWriter writer, string clientId)
\r
210 writer.AddAttribute(HtmlTextWriterAttribute.Id, clientId);
\r
211 writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox");
\r
212 writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
\r
215 writer.AddAttribute(HtmlTextWriterAttribute.Checked, "checked");
\r
219 writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackClientEvent(this, String.Empty));
\r
220 writer.AddAttribute("language", "javascript");
\r
222 if(AccessKey.Length > 0)
\r
224 writer.AddAttribute(HtmlTextWriterAttribute.Accesskey, AccessKey);
\r
228 writer.AddAttribute(HtmlTextWriterAttribute.Tabindex, TabIndex.ToString(NumberFormatInfo.InvariantInfo));
\r
230 writer.RenderBeginTag(HtmlTextWriterTag.Input);
\r
231 writer.RenderEndTag();
\r
234 bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)
\r
236 string postedVal = postCollection[postDataKey];
\r
237 bool postChecked = false;
\r
238 if(postedVal != null)
\r
240 postChecked = postedVal.Length > 0;
\r
242 Checked = postChecked;
\r
243 return (postChecked == Checked == false);
\r
246 void IPostBackDataHandler.RaisePostDataChangedEvent()
\r
248 OnCheckedChanged(EventArgs.Empty);
\r