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
15 using System.Collections;
\r
16 using System.Collections.Specialized;
\r
18 using System.Web.UI;
\r
20 namespace System.Web.UI.WebControls
\r
22 [DefaultEvent("Click")]
\r
23 public class ImageButton: Image, IPostBackDataHandler, IPostBackEventHandler
\r
25 private static readonly object ClickEvent = new object();
\r
26 private static readonly object CommandEvent = new object();
\r
30 public ImageButton(): base()
\r
34 public bool CausesValidation
\r
38 object o = ViewState["CausesValidation"];
\r
45 ViewState["CausesValidation"] = value;
\r
49 public string CommandArgument
\r
53 object o = ViewState["CommandArgument"];
\r
56 return String.Empty;
\r
60 ViewState["CommandArgument"] = value;
\r
64 public string CommandName
\r
68 object o = ViewState["CommandName"];
\r
71 return String.Empty;
\r
75 ViewState["CommandName"] = value;
\r
79 protected override HtmlTextWriterTag TagKey
\r
83 return HtmlTextWriterTag.Input;
\r
87 public event ImageClickEventHandler Click
\r
91 Events.AddHandler(ClickEvent, value);
\r
95 Events.RemoveHandler(ClickEvent, value);
\r
99 public event CommandEventHandler Command
\r
103 Events.AddHandler(CommandEvent, value);
\r
107 Events.RemoveHandler(CommandEvent, value);
\r
111 protected override void AddAttributesToRender(HtmlTextWriter writer)
\r
113 writer.AddAttribute(HtmlTextWriterAttribute.Type, "image");
\r
114 writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
\r
115 if(Page != null && CausesValidation)
\r
117 if(Page.Validators.Count > 0)
\r
119 writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Utils.GetClientValidatedEvent());
\r
120 writer.AddAttribute("language", "javascript");
\r
123 AddAttributesToRender(writer);
\r
126 protected virtual void OnClick(ImageClickEventArgs e)
\r
130 ImageClickEventHandler iceh = (ImageClickEventHandler)(Events[ClickEvent]);
\r
136 protected virtual void OnCommand(CommandEventArgs e)
\r
140 CommandEventHandler ceh = (CommandEventHandler)(Events[CommandEvent]);
\r
143 RaiseBubbleEvent(this, e);
\r
147 protected override void OnPreRender(EventArgs e)
\r
151 Page.RegisterRequiresPostBack(this);
\r
155 bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)
\r
157 string xCoord = postCollection[UniqueID + ".x"];
\r
158 string yCoord = postCollection[UniqueID + ".y"];
\r
159 if(xCoord != null && yCoord != null && xCoord.Length > 0 && yCoord.Length > 0)
\r
161 x = Int32.Parse(xCoord);
\r
162 y = Int32.Parse(yCoord);
\r
163 Page.RegisterRequiresRaiseEvent(this);
\r
168 void IPostBackDataHandler.RaisePostDataChangedEvent()
\r
172 void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
\r
174 if(CausesValidation)
\r
176 OnClick(new ImageClickEventArgs(x, y));
\r
177 OnCommand(new CommandEventArgs(CommandName, CommandArgument));
\r